Forum Doku Wiki Blog

Forumsarchiv 2007, März
Einträge ohne Zuordnung

archivierte Beiträge lesen

  1. (DATENBANK) Einträge ohne Zuordnung von skyposter, 29. 03. 2007, 23:11

Einträge ohne Zuordnung

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

Einträge ohne Zuordnung

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

Einträge ohne Zuordnung

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

Einträge ohne Zuordnung

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

Einträge ohne Zuordnung

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

Einträge ohne Zuordnung

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

Einträge ohne Zuordnung

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