MySQL Abfrage ???
-
HI,
Also ich habe da eine Datenbank: db
Aufbau:
id kundennummer artikelnummer artikelnummerintern stück verpackungsanzahl ....
noch ein wenig mehr aber das ist nciht wichtig.
So nun muss ich von dieser Datenbank eine Abfrage machen wo kundennummer artikelnummer und artikelnummerintern gleich sind.
wenn das so ist muss ich die stück und die verpackungsanzahl jeweils addieren.
Und dann die Summe als neuen Datensatz einfügen UND die einzelnen Datensätze aus denen ich die Summe gebildet habe muss ich dann löschen.weiß jemand wie ich das mache?
Habe schon das ganze auf ein paar wegen probiert komme aber nie hin!
ich scheitere meistens schon beim vergleich!Danke
-
SELECT * from tabelle where kundennummer = artikelnummer AND kundennummer = artikelnummerintern
Statt * am besten nur die Felder welche man braucht
Die ID wird in eine MAP gespeichert.
Nun die einzelnen Datenätze durchgehen und den rest machen.
-
Nein nicht untereinander gleich sondern id 1 kundennummer 999 artikelnummer 555 und artikelnummerintern 777 id2 kundennummer 999 artikelnummer 555 und artikelnummerintern777 somit ist id 1 und id 2 gleich wenn das der Fall ist muss ich die stück zusammenzählen von id 1 und id2 und die anzahl von id 1 und id 2 zusammenzählen.
Sorry hab mich wohl nciht ganz klar ausgedrückt!
-
Poste bitte registriert
-
SELECT artikelnummer,kundennummer,artikelnummerintern,SUM(stueck), SUM(verpackungsanzahl),COUNT(artikelnummer) from tabelle GROUP BY artikelnummer,kundennummer,artikelnummerintern
Nun bekommst du alle Datensätze aber bereits groupiert.
Außeracht läßt man jetzt die Datensätze die Count 1 haben.
-
mach ich eh nur werde immer rausgeschmissen wenn ich auf antworten gehe!
-
die Datensätze mit count 1 sind dann eh unwichtig.
Ok super nur wie lösche ich nun die Datensätze die ich zusammengefügt habe?
Weil nach der Abfrage muss ich ja mit Insert weitergehen damit ich die Summe reinschreiben kann!
-
Jedeneinzelnen datensatz von oben mit where feld1 = AND feld2 = us.w.
[ Dieser Beitrag wurde am 09.07.2003 um 13:28 Uhr von Unix-Tom editiert. ]
-
Das versteh ich jetzt nicht!
-
Du bekommst aus dem SELECT einzelne Datensätze.
Hier nur die nehmen welche count() > 1 haben.DELETE FROM tablelle where feld1 = feld1ausselect AND feld2 = feld2ausselect AND feld3 = feld3ausselect;
Hier werden pro SQLQUERY immer die alzahl COUNT() aus der select gelöscht.
Wenn count() aus der select für eine Zeile = 6 dann wreden bei einer DELETE alle 6 gelöscht.
-
und wann mache ich das genau?
Ich mache zuerst den select dann das insert wo ich die ergebnisse wieder reinschreibe.
Und dann mach ich den delete?
-
Das wird vermutlich nicht gehen.
Du machst den Select und speicherst das irgendwo ab.STINGLIST,STRINGARRAY, oder was auch immer.
Dann den DELETE und dann den INSERT mit den Daten aus dem Speicher.
-
Oje das klingt nicht einfach.
Wie schauts so aus ich ahbe mir überlegt wenn ich die SUM Count Abfrage mache speicher ich ja die Summen zur Zeit gleich ab und alle Summen speicher ich mit einem save = 1
Nur ist jetzt die Frage wenn cih die Summen machen speicher ich dann acuh alle Datensätze die ich einzeln gespeichert habe?D.h. Wenn das stimmt kann ich danach ja eigentlich ein DELETE machen auf alles wo save = 0 ist oder?
-
Kannst du auch aber das kostet Rechenleitung.
Da kannst du auch gleich eine temporäre Tabelle in MYSQL anlegen.
Ist zwar bei euch egal aber wir wollen ja sauber bleiben.
-
Naja ich glaube ich werde das einmal so proieren weil das ja nicht das einzige ist das ganze ist noch viel aufwendiger.
Und jede weitere Zeile wird umso schlimmer! *g*Außerdem hab ich es probiert wie Du gesagt hast und irgendwie hab ich nur Fehler bekommen!