In dieser Abfrage ich versuche, E-Mail-Adresse von Benutzern, die "erstellt" im Monat Juni 2016 und noch nie zuvor bestanden haben, aber das scheint überhaupt nicht zu funktionieren.rechts beitreten in meinem SQL-und Unterabfrage
Ich brauche Benutzer E-Mails herauszufiltern, die vor Juni 2016 bestanden haben und nur die neuen im Juni erstellt bekommen 2016.
Was mit dieser Abfrage falsch zu sein scheint?
select DISTINCT SF.customer_email, SF.created_at, historcialEmails.customeremail,
historcialEmails.createdAt
FROM
sales_flat_order SF
RIGHT JOIN
(
select SFO.customer_email
AS customeremail,
SFO.created_at as createdAt
FROM
sales_flat_order SFO
WHERE
DATE(SFO.created_at) <= '2016-05-31'
) AS historcialEmails
ON historcialEmails.customeremail = SF.customer_email
WHERE
YEAR(DATE(SF.created_at)) = '2016'
AND
MONTH(DATE(SF.created_at)) = '6'
AND
SF.customer_email IS NULL
Vielen Dank, aber was ist eigentlich falsch mit meiner Version der Abfrage? Ich bin gespannt, wo der Fehler liegt. –
Meine Antwort noch einmal lesen – Strawberry
Joining Positionen geschaltet, in Ordnung. (aber das würde logischerweise keinen Unterschied machen, Nein?), Zeitstempel bis heute hinzufügen, okay, aber warum sf.created_at BETWEEN '2016-06-01 00:00:00' UND '2016-07-01 00: 00:00 'sollte einen Unterschied machen? Ich bin mir immer noch nicht sicher, warum das funktionieren sollte und nicht der andere. Außerdem habe ich Ihre Version der Abfrage verwendet. Gleiche Ergebnisse wie zuvor. @strawberry –