Kompliceret SQL.
Hej Alle.Jeg sidder med et lidt spidsfindigt problem.
Jeg vil prøve at beskrive hvad det er jeg forsøger:
Jeg har en tabel hvori jeg har en række linjer. I hver af disse linjer henvises til en anden tabel. Der er dog 3 muligheder for hvilken tabel det skal hentes fra. Enten fra én der hedder runja_eng_sot eller runja_vo_tlg eller slet ingen.
Altså tabelstruktur:
runja_rundown:
id,stamp,log_ip,id_orders,id_type,id_element,pos id_live
runja_eng_sot:
id,stamp,log_ip,beskrivelse,sendedato,type,manus,dur,opfldato,journalist,tekniker,oplaeg,nedlaeg,note,status_f,status_k,status_m,status_v,status_g,arkiv_tape,arkiv_dur,arkiv_ink,ret ret_bruger
runja_vo_tlg:
id,stamp,log_ip,beskrivelse,sendedato,manus,type,dur,journalist,tekniker,status_f,status_k,status_m,status_v,status_g,note,ret,ret_bruger
Jeg vil altså fx liste fra runja_rundown hvor runja_rundow.id_orders='23', hvor den henter alle linjer. Derudover skal den ENTEN hente fra runja_eng_sot, runja_vo_tlg eller fra intet.
Jeg har pt. lavet koden:
SELECT runja_rundown.id,runja_rundown.stamp,runja_rundown.id_orders,runja_rundown.id_type,runja_rundown.id_element,runja_rundown.pos,runja_rundown.id_live,runja_eng_sot.status_f,runja_eng_sot.status_k,runja_eng_sot.status_m,runja_eng_sot.status_v,runja_eng_sot.status_g FROM runja_rundown INNER JOIN runja_eng_sot ON runja_rundown.id_element=runja_eng_sot.id WHERE (runja_rundown.id_type='1' OR runja_rundown.id_type='2') AND id_orders = %s ORDER BY pos ASC
hvor den sådan set gør det den skal, bortset fra at denne kode KUN henter type 1 og 2 (runja_eng_sot) og ikke type 3 og 4 (runja_vo_tlg). Dette troede jeg, var muligt via UNION ALL, men med koden:
SELECT runja_rundown.id,runja_rundown.stamp,runja_rundown.id_orders,runja_rundown.id_type,runja_rundown.id_element,runja_rundown.pos,runja_rundown.id_live,runja_eng_sot.status_f,runja_eng_sot.status_k,runja_eng_sot.status_m,runja_eng_sot.status_v,runja_eng_sot.status_g FROM runja_rundown INNER JOIN runja_eng_sot ON runja_rundown.id_element=runja_eng_sot.id WHERE (runja_rundown.id_type='1' OR runja_rundown.id_type='2') AND id_orders = %s ORDER BY pos ASC
UNION ALL
SELECT runja_rundown.id,runja_rundown.stamp,runja_rundown.id_orders,runja_rundown.id_type,runja_rundown.id_element,runja_rundown.pos,runja_rundown.id_live,runja_vo_tlg.status_f,runja_vo_tlg.status_k,runja_vo_tlg.status_m,runja_vo_tlg.status_v,runja_vo_tlg.status_g FROM runja_rundown INNER JOIN runja_vo_tlg ON runja_rundown.id_element=runja_vo_tlg.id WHERE (runja_rundown.id_type='3' OR runja_rundown.id_type='4') AND id_orders = %s ORDER BY pos ASC
Får jeg blot fejlen "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 30' at line 1".
Håber det er til at forstå, eller skriv :)
På forhånd tak.
