Der folgende Beitrag wurde am 29. 03. 2007, 23:11 Uhr von skyposter veröffentlicht.
Hi!
Ich habe zwei Tabellen, von denen eine den Einträgen der anderen Tags zuordnet.
Die einträge, die ein bestimmtes Tag haben bekomme ich problemlos:
SELECT a.`id` FROM `daten' AS a JOIN `tags` AS b WHERE a.`id`=b.`data` AND b.`tag`="irgendwas"
Jetzt suche ich aber alle Einträge in `data`, die KEINE Tags haben. Wie kann ich das abfregen?
Skyposter
Der folgende Beitrag wurde am 29. 03. 2007, 23:28 Uhr von der-daniel veröffentlicht.
> Hi!
abend!
> SELECT a.`id` FROM `daten' AS a JOIN `tags` AS b WHERE a.`id`=b.`data` AND b.`tag`="irgendwas"
> Jetzt suche ich aber alle Einträge in `data`, die KEINE Tags haben. Wie kann ich das abfregen?
einfach verneinen statt = einfach != oder `tag` = '' ;)
lg,
der-daniel
Der folgende Beitrag wurde am 29. 03. 2007, 23:36 Uhr von skyposter veröffentlicht.
Ich suche nicht die Einträge mit anderen Tags, sondern die Einträge, zu denen es garkeine zugehörigen Tags gibt.
Den SQL-String habe ich mehr zur Verdeutlichung des Aufbaus der Datenbank, als als Ansatz eingefügt.
Sky
Der folgende Beitrag wurde am 29. 03. 2007, 23:44 Uhr von der-daniel veröffentlicht.
lies alle ids der tabelle a aus, dann alle ids die einen tag haben.
(hast du ja beides schon)
so, dann bildest du einfach die schnittmenge und somit bleiben alle übrig, die keine tags haben...
hilfreich: arra_diff, array_intersect, ...
PHP-Referenz
dlg,
der-daniel
Der folgende Beitrag wurde am 29. 03. 2007, 23:51 Uhr von Tom veröffentlicht.
Hello,
>
> Ich habe zwei Tabellen, von denen eine den Einträgen der anderen Tags zuordnet.
> Die einträge, die ein bestimmtes Tag haben bekomme ich problemlos:
>
> SELECT a.`id` FROM `daten' AS a JOIN `tags` AS b WHERE a.`id`=b.`data` AND b.`tag`="irgendwas"
>
> Jetzt suche ich aber alle Einträge in `data`, die KEINE Tags haben. Wie kann ich das abfregen?
Das kann man sich so vorstellen:
Man sucht zuerst die Datensätze, für die es Treffer gibt:
select * from TEST where TEST.ID_TEST = VORHANDEN.ID_TEST;
Das ergibt alle Paarungen von TEST und VORHANDEN, die zusammenpassen.
Und dann müsste man sagen, dass man gerade das Gegenteil davon haben will:
TEST ist meine Produkt-Datei...
select * from TEST
left join VORHANDEN on (TEST.ID_TEST = VORHANDEN.ID_TEST) where VORHANDEN.ID_VORHANDEN is NULL order by TEST.ID_TEST;
Der ursprüngliche Tipp stammte von Daniela Koller:
http://forum.de.selfhtml.org/archiv/2003/2/37323/#m204537
Ich weiß aber leider im Moment nicht, wie der beim Forumsumzug migriert wurde.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Der folgende Beitrag wurde am 30. 03. 2007, 00:07 Uhr von Tom veröffentlicht.
Hello,
der Vollständigkeit halber...
> Der ursprüngliche Tipp stammte von Daniela Koller:>
http://forum.de.selfhtml.org/archiv/2003/2/37323/#m204537
Habe von Daniela schon lange nichts mehr gelesen.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Der folgende Beitrag wurde am 29. 03. 2007, 23:54 Uhr von skyposter veröffentlicht.
Ich habe die Lösung gefunden:
SELECT a.`id`
FROM `daten` AS a
LEFT JOIN `tags` AS b ON a.`id` = b.`data`
WHERE b.`id` IS NULL
Skyposter
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4