MySQL: doppelte datensätze zu einem zusammenfassen
janosch
- datenbank
hallo,
ich habe eine shopdatenbank mit folgenden feldern:
id
datum
name
vorname
bestellung
adresse
tel
mein php-script schreibt bei bestellungen dort datensätze rein:
+++++++++++++++++++++++++++++++
$db->query("INSERT INTO $shop_table (name,vorname,datum,newsletter,email,typ,strasse,plz,ort,telefon,fax,long_text,nachricht,bestellnummer) VALUES ('$b_last','$b_first','$datum','$newsletter','$b_email','$typ','$b_addr','$b_zip','$b_city','$b_phone','$b_fax','$strWurdeGekauft','$comment','$bestellungnr')");
+++++++++++++++++++++++++++++++
so weit so gut.
kommt jetzt eine neue (2.) bestellung von herrn mustermann rein, will ich alle datensätze nach vor-, zunammen und ort prüfen, falls vorhanden, dann alle bestellungen in einen datensatz fassen. wie kann ich mit php prüfen ob der datensatz vorhanden ist.
janosch
yo,
id
datum
name
vorname
bestellung
adresse
tel
das sieht ein wenig danach aus, als wenn es keine kundentabelle gibt, sondern man bei jeder bestellung immer wieder seine daten eingeben muss. ob das sinnvoll ist oder nicht, kann ich in deinem fall nicht beurteilen, aber es ist ein hinweis wert, bestellungen und kunden zu trennen.
was mir noch aufgefallen ist, die spalten in der tabellenbeschreibung stimmt nicht mit den spalten in der insert answeisung überein.
kommt jetzt eine neue (2.) bestellung von herrn mustermann rein, will ich alle datensätze nach vor-, zunammen und ort prüfen, falls vorhanden, dann alle bestellungen in einen datensatz fassen. wie kann ich mit php prüfen ob der datensatz vorhanden ist.
das zu prüfen ist sehr leicht, einfach einen Select über die gewünschten spalten machen. <--- ABER, zuvor musst du das genauer spezifizieren. zum einen würde hier fehlende kundentabelle sinn machen, da man dann einfach über die ID des kunden suchen könnte. es können ja auch theoretisch zwei kunden mit gleichen namen im gleichen haus wohnen, obwohl das wohl eher selten vorkommen wird. außerdem willst du ja nicht immer die bestellung zusammenfassen, sondern vielleicht nur, wenn sie am gleichen tage gemacht wird. so wird es glaube ich bei quelle und co gemacht.
jetzt aber zu einem viel wichtigeren punkt. eine bestellung beinhaltet ja noch keine artikel. ich kann nur vermuten, aber ich denke mal, du hast bis jetzt die bestellungen und die artikel nicht voneinander getrennt ?
das ist nämlich sehr wichtig, wo deine artikel stehen, wenn du zum beispiel zwei bestellungen am gleichen tag von einer person zu einer bestellung zusamenführen willst.
Ilja
Hello,
hallo,
ich habe eine shopdatenbank mit folgenden feldern:
id
datum Datum, seit wann er Kunde ist?
name
vorname
bestellung was hat die in dieser Tabelle zu suchen?
adresse
tel
Sieht verflict nach mangelhafter Normalisierung aus
T_Kunde
T_Bestelllung
T_Beestellposition
T_Artikel
Und um festzustellen, ob ein Kunde schon mal 'was bestellt hat, solltest Du festlegen, anhand welcher Kriterien der Kunde wiedererkannt werden soll. Was soll ihn denn authentifizieren?
Angenommen, da heißt einer Hort Meier, davon gibt es ca. 750 in DE.
Also wäre es doch sowieso zweckmäßig, wenn Du ihn vor dem Kauf "nachweisbar" über seine Rechte aufkläsrt, also ihm einmal per Post eine Anmeldebestätigung für den Shop mit Loginname und Passwort schickst. Dann kann er immer wiedererkannt werden. Anonyme Verkäufe sind über das Internet nicht so gesund für den Lieferanten...
Liebe Grüße aus http://www.braunschweig.de
Tom