heinetz: Hilfe bei SQL-Statement

Beitrag lesen

Hallo Forum,

ich habe in meiner Datenbank mehrere Tabellen. Z.B. die
Tabelle 'products_properties':

+-----------+--------------+-----------+
|product_id |  property_id | values_id |
+===========+==============+===========+
|         1 |           13 |       245 |
+-----------+--------------+-----------+

Der 'eigentliche' Wert, den ich aus diesem Datensatz
verwende, ist durch 'values_id' auf die Tabelle 'values'
referenziert.

+------+---------------------+----------+-----------+
|   id |                 typ |   lang_0 |    lang_1 |
+======+=====================+==========+===========+
|  245 | products_properties |    klein |     small |
+------+---------------------+----------+-----------+

Das funktioniert alles sehr gut. Was allerdings passieren
kann, ist dass ein verwaister Datensatz in der Tabelle
'values' verbleibt. Um bei diesem Beispiel zu bleiben:

Der Datensatz mit der Referenz auf die 'values_id' ist
durch irgendeinen Umstand nicht mehr vorhanden.

Um das ganze bereinigen zu können, komme ich mit folgendem
SQL-Statement an die verwaisten Datensätze:

  
SELECT *  
FROM `values`  
LEFT JOIN `products_properties` ON `values`.`id` = `products_properties`.`values_id`  
WHERE `values`.`typ` = 'products_properties'  
AND isnull( `products_properties`.`values_id` )  

Jetzt besteht meine DB natürlich nicht nur aus zwei Tabellen,
sondern aus mehreren. Die Datensätze aus anderen Tabellen
referenzieren genauso über die 'values_id' auf die Tabelle
'values'.

'products_properties'
+-----------+--------------+-----------+
|product_id |  property_id | values_id |
+===========+==============+===========+
|         1 |           13 |       245 |
+-----------+--------------+-----------+

'languages'
+-----------+------------+
|        id |  values_id |
+===========+============+
|         1 |         13 |
+-----------+------------+

'values'
+------+---------------------+----------+-----------+
|   id |                 typ |   lang_0 |    lang_1 |
+======+=====================+==========+===========+
|  245 | products_properties |    klein |     small |
+------+---------------------+----------+-----------+
|   13 |           languages |  deutsch |    german |
+------+---------------------+----------+-----------+

Angenommen die beiden Datensätze in dem Beispiel seien
verwaist, sprich es gibt keine Zuordnung mehr in den
entsprechenden Tabellen, auf die auch das Feld 'typ'
Aufschluss gibt, krieg ich beide verwaisten Datensätze
mit einem SQL-Statement heraus ?

danke für Tipps und

beste gruesse,
heinetz