Sziasztok!
MySQL-el szenvedek, mert a hosztingnál csak 4.0.24-es MySQL van fent, és az nem szereti a SUBQUERY-t.
Van egy SQL lekérdezésem, és a feltételek között ellenőriznem kell, hogy egy adott ID NEM szerepel egy másik táblában.
A lekérdezés itt:
http://pastebin.ca/1333909
Már keresgéltem az agyamban, és "gugol"tam is, de sajnos semmi ötlet nem maradt...
Mindenkinek előre köszönöm a rám áldozott energiát!
- 1090 megtekintés
Hozzászólások
Miért nem teszed bele a lekérdezésbe a "rendeles_torolt" táblát is "left join"-nal?
- A hozzászóláshoz be kell jelentkezni
Mert akkor azokat kapom meg, amik benne vannak,nekem meg azok kellenek, amik nincsenek... vagy tévedek?
- A hozzászóláshoz be kell jelentkezni
Akkor használj left outer join-t, és a hozzájoinolt tábla egyedi kulcsára szűrj: where id is null.
Így azokat kapod meg, ahol a join nem talált rekordot. Egészségesebb is, mint a not in-es subselect.
- A hozzászóláshoz be kell jelentkezni
SELECT DISTINCT (rv3.id) AS rendeleskod, v.id AS vevokod, rv3.rendeles_ido, rv3.kp AS eddigfizetett, rv3.kedvezmeny, rv3.teljes_ar,
(rv3.teljes_ar - ( (rv3.kedvezmeny /100) * rv3.teljes_ar )) AS fizetendo, v.nev, v.irsz, v.varos, v.utca_hazszam, v.emelet_ajto,
v.telefon, v.email, v.megjegyzes, v.utvonal_kod
FROM rendeles_v3 rv3
JOIN rendeles_adat_v3 rav3 ON rav3.id_rendeles = rv3.id
JOIN etlap_v3 e ON e.id = rav3.id_etlap
JOIN vevo v ON v.id = rv3.id_vevo
left join rendeles_torolt rt on (rt.id_rendeles = rv3.id)
WHERE e.ev =2009 AND
e.het =04 AND
rt.id_rendeles is null and
(rv3.teljes_ar - ( rv3.teljes_ar - ( (rv3.kedvezmeny /100) * rv3.teljes_ar ) )) !=0
ORDER BY rv3.id
LIMIT 0 , 30
Bocsi ha szintaktikailag hibás, nem mysql-t használok
- A hozzászóláshoz be kell jelentkezni
Valóban, left outer! Köszönöm!
- A hozzászóláshoz be kell jelentkezni