Ich habe eine Tabelle mit folgendem Aufbau:
id kdnr artnr preis
1 1234 abc 10
2 4556 bbc 11
3 3244 abc 11
4 1234 abc 11
das sind hinterlegte Preise für einen Onlineshop. Jetzt sind
für Kunde 1234 zwei Preise für den Artikel abc hinterlegt.
Der Preis 10 Euro wurde als erstes hinterlegt, nachträglich aber dann auf 11 Euro gesetzt.
Der Shop fängt jetzt mit der Suche an und nimmt den ersten Treffer, also den alten 10 Euro Preis.
Jetzt brauche ich ein SLQ Script, das folgendes macht:
Wenn Kundennummer und Artikelnummer gleich ist soll die älteste ID gelöscht werden.
In diesem Fall also id 1.
Hat jemand eine Idee???
SQL Befehl der doppelte Einträge löscht
Re: SQL Befehl der doppelte Einträge löscht
Hi,
das geht eigentlich ganz einfach:
Dabei gehe ich davon aus, dass die IDs fuer die spaeteren Preise immer hoeher sind!
Ciao
Stefan
das geht eigentlich ganz einfach:
Code: Alles auswählen
DELETE FROM preistabelle WHERE id IN (SELECT min(id) FROM preistabelle GROUP BY kdnr, artnr HAVING COUNT(id) > 1)
Ciao
Stefan
Bürokratie kann man nur durch ihre Anwendung bekämpfen.
Re: SQL Befehl der doppelte Einträge löscht
Ich habe diese Lösung "erarbeitet"
Code: Alles auswählen
CREATE TABLE temp AS SELECT min( pr_id ) AS pr_id2, count( * ) AS pr_id, count( * ) AS anzahl, c_id, products_id FROM xt_plg_customers_price GROUP BY c_id, products_id HAVING count( * ) >=2;
delete from xt_plg_customers_price where pr_id in(select pr_id2 from temp);
DROP TABLE `temp`;