php - Get all posts from a user with their category's -


the situation

i'm working on blog-system , i'm stuck @ trying posts category's made particular user.

the query shows first post in database, no madder how many posts user has. also, generated category-output wrong.

database

here sql-commands create 3 required tables.

post

create table post(     headline varchar(100),     date datetime,     content text,     author int unsigned,     public tinyint,     type int,     id serial,     primary key (id), )engine=innodb default charset=utf8 collate=utf8_unicode_ci; 

author id of user created post, public determines if post can read or draft , type determines if it's blog-post (0) or else.

category

create table kategorie(     name varchar(30),     short varchar(200),     id serial,     primary key (name) )engine=innodb default charset=utf8 collate=utf8_unicode_ci; 

post_kategorie

create table post_kategorie(     post_id bigint unsigned,     kategorie_id bigint unsigned,     primary key (post_id, kategorie_id),     foreign key (post_id) references post(id),     foreign key (kategorie_id) references kategorie(id) )engine=innodb default charset=utf8 collate=utf8_unicode_ci; 

the query

this query have, mentioned above, doesn't work want to.

select post.headline, post.date,   concat(   "[", group_concat('{"name":"',kategorie.name,'","id":',kategorie.id,'}'), "]"  ) "categorys" post, kategorie, post_kategorie post.author = 1 and(   post.public = 1   , post.type = 0 )and(   post_kategorie.post_id = post.id   , post_kategorie.kategorie_id = kategorie.id ) 

since 1 post can have multiple category's, query generates json decoded object in php. easies way archive this, thought.

what missing here?

you missing in end:

group post.headline, post.date 

update

also, noticed when post has no categories, not appear. problem performing join via where clause. when that, join behave inner join.

in order have posts always, need left join:

select post.headline, post.date,   concat(   "[", group_concat('{"name":"',kategorie.name,'","id":',kategorie.id,'}'), "]"  ) "categorys" post    left join post_kategorie      on post.id = post_kategorie.post_id   left join kategorie      on post_kategorie.kategorie_id = kategorie.id post.author = 1 , post.public = 1 , post.type = 0 group post.headline, post.date 

Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -