Denkfehler im Lösch-Query
Toby
- datenbank
0 Rouven1 King^Lully0 Tom
Hi,
der Query soll alle Einträge in tab_produkte löschen, deren für deren _kategorie (=Kategorie ID) es keine Kategorie mehr gibt, also keinen Datensatz mehr in der tab_kategorien mit eben diesem _kategorie-Wert:
DELETE FROM tab_produkte WHERE ! (_kategorie = ( SELECT _kategorie FROM tab_kategorien WHERE (_kategorie=tab_produkte._kategorie ) ) )
Egal ob dies der Fall ist oder nicht, wird kein einziger Eintrag gelöscht. Mysql liefert aber auch keinen Fehler, also denke ich an einen semantischen Fehler, kann ihn aber nicht finden.
Danke für Tipps
Hello,
Danke für Tipps
...hab ich nur einen parat, eine alternative Abfrage:
DELETE FROM tab_produkte
WHERE _kategorie NOT IN (
SELECT _kategorie FROM tab_kategorien
)
MfG
Rouven
DELETE FROM tab_produkte WHERE ! (_kategorie = ( SELECT _kategorie FROM tab_kategorien WHERE (_kategorie=tab_produkte._kategorie ) ) )
Du arbeitest doch mit Mengen, da würden Wir die Verwendung des IN-Operators erwarten.
Hello,
der Query soll alle Einträge in tab_produkte löschen, für deren ID_Kategorie es keine Kategorie mehr gibt, also keinen Datensatz mehr in der tab_kategorien mit eben diesem _kategorie-ID:
das nennt man auch Integritätstest
Du kannst Dir das so vorstellen:
Welche Datensätze sollen aus der Ergebismenge von PRODUKT aussortiert werden?
Die Ergebnismenge ist diejenige, die Du löschen willst.
Aus der musst Du daher vorher diejenigen aussortieren, die _nicht_ gelöscht werden sollen.
select ID_PRODUKT from PRODUKT where PRODUKT.ID_PRODUKT = KATEGORIE.ID_KATEGORIE;
Für diese Produkte gibt es also eine Kategorie. WIr wollen sie behalten!
Und dann sagst Du, dass Du gerade das Gegenteil davon haben willst:
select ID_PRODUKT from PRODUKT
left join KATEGORIE on (PRODUKT.ID_KATEGORIE = KATEGORIE.ID_KATEGORIE) where KATEGORIE.ID_KATEGORIE is NULL order by PRODUKT.ID_PRODUKT;
left Join bedeutet soviel wie:
Die linke Tabelle wird vollständig durchlaufen, die rechte folgt
Wenn in der rechten aber der Zeiger auf NULL steht, wurde kein Partner gefunden.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom