mysql - Get information about all rows from one table, when in join table that row is not -
how obtain in case in table useritems not record joined moduleitems null?
select `users`.*, `useritems`.*, `moduleitems`.*, `modulesubitems`.* `users` left bring together `useritems` on useritems.f_user_id = users.user_id left bring together `moduleitems` on moduleitems.moduleitem_id = useritems.f_moduleitem_id left bring together `modulesubitems` on modulesubitems.modulesubitem_id = useritems.useritem_value
edit: my db structure
create table if not exists `moduleitems` ( `moduleitem_id` int(11) not null auto_increment, `f_module_id` int(11) not null, primary key (`moduleitem_id`) ) engine=innodb default charset=utf8 auto_increment=63 ;
create table if not exists `modules` ( `module_id` int(11) not null auto_increment, primary key (`module_id`) ) engine=innodb default charset=utf8 auto_increment=2 ;
create table if not exists `modulesubitems` ( `modulesubitem_id` int(11) not null auto_increment, `f_moduleitem_id` int(11) not null, primary key (`modulesubitem_id`) ) engine=innodb default charset=utf8 auto_increment=19 ;
create table if not exists `useritems` ( `f_user_id` int(11) not null, `f_moduleitem_id` int(11) not null, `useritem_value` varchar(255) default null, primary key (`f_user_id`,`f_moduleitem_id`) ) engine=innodb default charset=utf8;
create table if not exists `users` ( `user_id` int(11) not null auto_increment, primary key (`user_id`) ) engine=innodb default charset=utf8 auto_increment=35 ;
if see every moduleitem each user, regardless if have matching record in useritems table, should work:
select `users`.*, `useritems`.*, `moduleitems`.*, `modulesubitems`.* `users` cross bring together `moduleitems` left bring together `useritems` on useritems.f_user_id = users.user_id , moduleitems.moduleitem_id = useritems.f_moduleitem_id left bring together `modulesubitems` on modulesubitems.modulesubitem_id = useritems.useritem_value
mysql sql
No comments:
Post a Comment