Vinzenz: Tabellen vergleichen

Beitrag lesen

Hallo Dirk,

Ich habe zwei Tabellen. Beide besitzen ein ID Feld. Normalerweise dürfen in beiden Tabellen nur verknüpfte Werte enthalten sein. Also wenn es in einer Tabelle die Id 100 gibt (aut_increment), dann gibt es diese auch in der anderen (nicht auto_increment). Nun sind aber in einer Tabelle einige einträge enthalten mit einer ID, die es in der anderen nicht gibt.

Wie kann ich nun über eine PHP Abfrage (select) die Datensätze finden die nur in einer Tabelle vorhanden sind, damit ich diese löschen kann?

Sorry, aber PHP hat mit SQL zunächst einmal überhaupt nichts zu tun.

Das hier funktioniert nicht:

SELECT products_id from products AS p1, products_to_categories AS p2 where p1.products_id != p2.products_id

Dieses SELECT-Statement dürfte wirklich nicht das von Dir gewünschte Resultat zurückliefern.

Wenn ich Dich richtig verstehe möchtest Du die IDs (product_id) in der Tabelle product_to_categories finden, für die keine Entsprechungen in der Tabelle products existieren. Habe ich das richtig interpretiert?

Wenn ja, so kann Dir der OUTER JOIN helfen:

SELECT
    pc.products_id,
    p.products_id
FROM products_to_categories AS pc
LEFT OUTER JOIN products AS p
ON pc.products_id = p.products_id

ist der erste Ansatz.

Nun musst Du nur noch mit der WHERE-Klausel Deine gewünschten Datensätze ausfiltern. Das sind übrigens diejenigen, bei denen p.products_id den Wert NULL enthält.

Die WHERE-Klausel überlasse ich Dir als Übung.

Freundliche Grüsse,

Vinzenz