Azon rekordok lekérdezése, amihez nem kapcsolódik másik táblában rekord
Sziasztok!
A kérdésem sztem egyszerű, de nem jövök rá, hogyan oldjam meg. Adott két egyszerű tábla:A cimkeze tábla köti össze a címkéket a bejegyzéseket. A cimkek táblából szeretném kilistázni azokat a sorokat, amikhez nem kapcsolódik semmi a cimkezes táblában az adott bejegyzéssel. Tehát ha épp a galéria 5 id-vel rendelkező elemét szerkeszti, akkor listázza ki azokat a címkéket, amik még nincsenek hozzáadva az 5-ös galériához.
Valami JOIN-nal kéne gondolom.. Próbáltam EXCEPT-el is, de a legegyszerűbb lekérdezés sem futott le nálam (verzióföggő?)..
■ A kérdésem sztem egyszerű, de nem jövök rá, hogyan oldjam meg. Adott két egyszerű tábla:
CREATE TABLE IF NOT EXISTS cimkek (
id SMALLINT UNSIGNED NOT NULL auto_increment,
nev VARCHAR(50) NOT NULL default '',
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS cimkezes (
elem_id INT UNSIGNED NOT NULL,
kategoria ENUM ('blog', 'galeria'),
cimke_id SMALLINT UNSIGNED NOT NULL
);
Valami JOIN-nal kéne gondolom.. Próbáltam EXCEPT-el is, de a legegyszerűbb lekérdezés sem futott le nálam (verzióföggő?)..
Egy megoldás
köszi
having - group by
A left join mint otlet teljesen jo, a teljesitmenye is jobb lesz, mint az in/subselect parosnak. Viszont having klauzulanak csak group by hasznalata eseten van ertelme.
Udv,
Felho
Másik
where not cimkek.id in (select cimkezes.cimke_id from cimkezes where cimkezes.cimke_id=cimkek.id and cimkezes.kategoria='galeria' and cimkezes.elem_id=5)
De hogy ez működik-e mysql-ben azt nem tudom.
nekem is!
SELECT felh FROM felhasznalok WHERE cim in (SELECT cime FROM valaszok WHERE valasz='3')
köszönöm!
ui: a DISTINCT menni fog a régebbi mysqlon?
nem az in miatt...