Jag har problem med ett antal frågor som ser typ ut som exemplet nedan. De är skrivna med subselect och nu visade det sig att programmvaran på servern inte stödjer det. Hur går det att lösa utan att uppgradera programvaran på servern? Är join ett alternativ?
select comp_id,comp_name from nars_company where comp_id not in(select comp_id from nars_company_person where person_id in(select student_id from nars_student))order by comp_name;
Det borde gå att lösa med en JOIN, ja.
Men det kan ju ändå vara bra att uppgradera MySQL (som jag antar att det handlar om.)
Borde funka:
SELECT comp_id, comp_name FROM nars_company nc
LEFT JOIN nars_company_person ncp ON nc.comp_id = ncp.comp_id
LEFT JOIN nars_student ns ON ncp.person_id = ns.student_id
WHERE ns.student_id IS NULL AND ncp.comp_id IS NULL
ORDER BY comp_name
Tyvärr så ligger servern lite utanför min kontroll men det vore ju den bästa lösningen. Tyvärr fungerar det inte riktigt med din join utan får följande meddelande. #1052 - Column: 'comp_id' in field list is ambiguous
SELECT distinct nc.comp_id, nc.comp_name FROM nars_company nc
LEFT JOIN nars_company_person ncp ON nc.comp_id = ncp.comp_id
LEFT JOIN nars_student ns ON ncp.person_id = ns.student_id
WHERE ns.student_id IS NULL AND ncp.comp_id IS NULL
ORDER BY nc.comp_name