mysql - How do I make this select in Single query? -


i trying select 2 (comma separated) items, 1 "cuisines" , other 1 "facilities" 4 tables in mysql.

this how tried it:

$query = "select group_concat(distinct c.name separator ', ') cuisines,                  group_concat(distinct f.name separator ', ') facilities           cuisines c, facilities f             inner join restaurant_cuisines rc on rc.cuisine_id = c.id                inner join restaurant_facilities rf on rf.facility_id = f.id               rc.restaurant_id = 16 , rf.restaurant_id = 16";  

but query not working. if use 2 separate query 2 selection can work. looking solution in single query.

this output if use 2 separate query:

mysql> select group_concat(distinct c.name separator ', ') cuisines     -> cuisines c     -> inner join restaurant_cuisines rc on rc.cuisine_id = c.id     -> rc.restaurant_id = 15; +-----------------------------------------+ | cuisines                                | +-----------------------------------------+ | american, asian, bars & pubs, beverages | +-----------------------------------------+ 1 row in set (0.14 sec) 

can tell me possible in mysql?

thank you.

don't mix , , inner join notation in clause 2 separate standards (ansi vs non-ansi) compiler has pick , use one, can't use both. in other words...

from cuisines c, <-- isn't allowed inner join syntax..       facilities f inner join restaurant_cuisines rc on rc.cuisine_id = c.id    inner join restaurant_facilities rf on rf.facility_id = f.id    

i've altered order of joins cuisines --> restraunt_cusines-->restraunt_facilities-->facility. believe accurate based on notation , joins. i've eliminated 1 of clause criteria redundant based on joins created.

select group_concat(distinct c.name separator ', ') cuisines,        group_concat(distinct f.name separator ', ') facilities cuisines c inner join restaurant_cuisines rc    on rc.cuisine_id = c.id    inner join restaurant_facilities rf    on rc.restraunt_id = rf.restraunt_id inner join facilities f   on rf.facility_id = f.id     rc.restaurant_id = 16;  

or

select group_concat(distinct c.name separator ', ') cuisines,        group_concat(distinct f.name separator ', ') facilities cuisines c     ,facilities f     , restaurant_cuisines rc      , restaurant_facilities rf   rc.restaurant_id = 16    , rf.restaurant_id = 16   , rc.cuisine_id = c.id      , rf.facility_id = f.id     

however believe you're missing join between restaurant_cuisines , restaurant_facility, on restaurant_id allow eliminate of of 2 rc.restaurant_id = 16 , rf.restaurant_id = 16


Comments