webForumDet fria alternativet

Subqueries

Databaser & SQL

4 svar · 333 visningar · startad av dahlgren

Medlem sedan aug. 20011 946 inlägg
Frågan#1

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;
Medlem sedan juni 200032 967 inlägg
#2

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
Medlem sedan aug. 20011 946 inlägg
#3

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

Medlem sedan dec. 200012 464 inlägg
#4
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
Medlem sedan juni 200032 967 inlägg
#5

dahlgren skrev:

Tyvärr fungerar det inte riktigt med din join utan får följande meddelande. #1052 - Column: 'comp_id' in field list is ambiguous

My bad. :)

252 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)