LEFT JOIN soll bestimmtes NICHT finden

Ja, aber nicht das was ich will :)

Ok, habe vergessen zu erwähnen, dass das ganze noch in der Abfrage von oben passieren soll. Und wenn es geht: Nur mit dieser Abfrage. Es soll mit dieser Abfrage möglich sein, die Kunden auszuwählen, die nur einmal in der DB eingetragen sind. Wenn öfters, dann alle anderen Einträge ignorieren.
Das ganze, wie schon gesagt, mit dieser einen Abfrage von oben.
Möglich?
 
Du willst einfach alle eingetragenen Kunden abfragen? Also wenn ein Kunde 2x eingetragen ist willst du nur ein Datensatz haben? Das geht mit DISTINCT.

Code:
SELECT DISTINCT email FROM table
 
DISTINCT fasst Datensätze nur zusammen, wenn alle projezierten Spalten gleich sind. Wenn ich Dich richtig verstanden habe, willst Du nach der E-Mail-Adresse gruppieren, da da liegt es doch Nahe, GROUP BY ordEMail in die Abfrage aufzunehmen.

Um das Eintragen abzusichern, könnte man auf die E-Mail-Spalte eine UNIQUE INDEX legen. Aber warum soll ein Kunde nur eine Bestellung abschicken können?

Gruß hpvw

PS: Auch MySQL kennt ein IF.
Wie Du richtig festgestellt hast, gibt es aber bei Insert-Statements keine Where-Klausel.
 
hpvw hat gesagt.:
DISTINCT fasst Datensätze nur zusammen, wenn alle projezierten Spalten gleich sind. Wenn ich Dich richtig verstanden habe, willst Du nach der E-Mail-Adresse gruppieren, da da liegt es doch Nahe, GROUP BY ordEMail in die Abfrage aufzunehmen.

Um das Eintragen abzusichern, könnte man auf die E-Mail-Spalte eine UNIQUE INDEX legen. Aber warum soll ein Kunde nur eine Bestellung abschicken können?

Gruß hpvw

PS: Auch MySQL kennt ein IF.
Wie Du richtig festgestellt hast, gibt es aber bei Insert-Statements keine Where-Klausel.
Danke für deine Antwort. Da ich zurzeit in der Schule sitze kann ich es morgen in der Arbeit probieren.

Natürlich kann ein Kunde öfters bestellen. Darum geht es mir gar nicht :) Ich möchte nur aus der Bestell-DB die Kunden EINMAL erfassen. Also Mehrfachbesteller und solche, die 10 mal das Bestellformular hintereinander abschicken sollen nur einmal erfasst werden. Hoffe es funktioniert mit Group By :)

Danke euch beiden

p.s. gibts eigentlich eine bessere Hilfe für MySQL? Die Dokumentation von MySQL finde ich schrecklich, wenn ich das sagen darf. Man findet nix und wenn man was gefunden hat, ist man nicht viel schlauer... so geht es mir jedenfalls. Habe gestern sicherlich an die 3 Stunden bei MySQL gesucht, ob ich eine Lösung finde. Bin auch öfters über Group By gestoßen, habe aber nicht gesehen, dass es meine (evtl.?) Lösung ist.

InFlame hat gesagt.:
Noch etwas anderes: Habe ein TIMSTAMP Feld in der DB und damit alle einträge von Heute auswählen. Ich bekomm es einfach nicht hin.
Habe es hiermit versucht:
;)
 
Zuletzt bearbeitet:
hpvw hat gesagt.:
DISTINCT fasst Datensätze nur zusammen, wenn alle projezierten Spalten gleich sind. Wenn ich Dich richtig verstanden habe, willst Du nach der E-Mail-Adresse gruppieren, da da liegt es doch Nahe, GROUP BY ordEMail in die Abfrage aufzunehmen.

Um das Eintragen abzusichern, könnte man auf die E-Mail-Spalte eine UNIQUE INDEX legen. Aber warum soll ein Kunde nur eine Bestellung abschicken können?

Gruß hpvw

PS: Auch MySQL kennt ein IF.
Wie Du richtig festgestellt hast, gibt es aber bei Insert-Statements keine Where-Klausel.
So einfach kanns mal wieder gehen. Tausend mal davon gelesen, aber nie den Zweck verstanden.
Vielen vielen Dank!

evtl. noch ein kurzer Tipp mit dem blöden Datum? :)
 
Auch wenn das Handbuch nicht mehr als eine Referenz ist, steht doch eine Menge drin, zum Beispiel ist unter den Date and Time Functions die Funktion TO_DAYS beschrieben. Die kann Dir helfen.
SQL:
... where TO_DAYS(zeit)=TO_DAYS(NOW())
Bedenke, dass Du die Funktion sowohl auf das Feld, als auch auf NOW() anwenden musst, da Du sonst Äpfel mit Birnen vergleichst.

Gruß hpvw
 
hpvw hat gesagt.:
Auch wenn das Handbuch nicht mehr als eine Referenz ist, steht doch eine Menge drin
Mag, sein. Aber man (ich) findet nix... Mal von verstehen ganz abgesehen. (Habe SEHR oft die Beschreibung von TO_DAYS gelesen... vielleicht bin ich auch einfach nur zu blöd für das ganze...
 
Du hast recht, es ist nicht besonders übersichtlich.
Vielleicht helfen Dir ja meine beiden Ausgangspunkte, mit denen ich immer recht schnell das finde, was ich suche:

Functions and Operators
Statement Syntax

Ich bevorzuge übrigens die englische Variante, da die Übersetzung meist nicht up to date und oft auch nur halb so gut beschrieben ist.

Gruß hpvw
 
Jetzt ist mir leider aufgefallen, dass es immer noch nicht richtig funktioniert.
Bei der 1. Abfrage gibt 'er' mir ganz brav alle email Adressen nur einmal aus. Wenn ich jetzt aber das Skript noch einmal ausführe, nimmt er die ganzen Datensätze, die er vorher durch die doppelte email Adresse nicht genommen hat. Somit hätte ich Kunden wieder doppelt und dreifach.
Muss ich jetzt per PHP Abfragen, ob es den Kunden (= Email) schonmal gibt oder geht das per SQL?
 

Neue Beiträge

Zurück