Ich habe zwei Tabellen: Kunden und Bestellungen.SQL-Abfrage mit UND ODER
Ich muss wissen, welche Kunden "Brot" UND (Milch oder Eis) in einem bestimmten Monat bestellt haben.
Wie soll ich die SQL-Abfrage schreiben?
Danke.
Ich habe zwei Tabellen: Kunden und Bestellungen.SQL-Abfrage mit UND ODER
Ich muss wissen, welche Kunden "Brot" UND (Milch oder Eis) in einem bestimmten Monat bestellt haben.
Wie soll ich die SQL-Abfrage schreiben?
Danke.
Wie andere in den Kommentaren gesagt haben, sollten Sie wirklich versuchen, Ihre Frage zu verbessern, so dass die Leute eher geneigt sind zu antworten und Ihnen zu helfen.
Einstellung einige Testdaten bis (Annahmen über Ihr Schema zu machen):
CREATE TABLE Customers (
CustomerID INT,
CustomerName VARCHAR(50)
)
CREATE TABLE Orders (
OrderId INT,
OrderDate DATETIME,
CustomerID INT,
Product VARCHAR(50)
)
INSERT INTO Customers
SELECT 1, 'John Smith'
UNION
SELECT 2, 'Jane Doe'
UNION
SELECT 3, 'Rachel Booth'
UNION
SELECT 4, 'Steve Barnes'
UNION
SELECT 5, 'Nancy Green'
UNION
SELECT 6, 'Phil Jones'
INSERT INTO Orders
SELECT 1, '2016-09-01', 1, 'Bread'
UNION
SELECT 2, '2016-09-10', 3, 'Milk'
UNION
SELECT 3, '2016-09-19', 1, 'Milk'
UNION
SELECT 4, '2016-10-07', 4, 'Bread'
UNION
SELECT 5, '2016-10-13', 2, 'Milk'
UNION
SELECT 6, '2016-10-15', 4, 'Milk'
UNION
SELECT 7, '2016-10-19', 6, 'Milk'
UNION
SELECT 8, '2016-10-21', 6, 'Ice Cream'
UNION
SELECT 9, '2016-10-27', 1, 'Milk'
UNION
SELECT 10, '2016-10-28', 4, 'Milk'
UNION
SELECT 11, '2016-11-06', 5, 'Ice Cream'
UNION
SELECT 12, '2016-11-09', 5, 'Bread'
Und den gewünschten Monat Einstellung zu überprüfen:
DECLARE @Month DATETIME
SET @Month = '2016-09-01'
ich eine Liste von Kunden erhalten würde Ihre Logik passend wie dies:
SELECT DISTINCT c.CustomerName
FROM Customers c
JOIN Orders ob ON ob.CustomerID = c.CustomerID
JOIN Orders omi ON omi.CustomerID = c.CustomerID
WHERE ob.Product = 'Bread'
AND omi.Product IN ('Milk','Ice Cream')
AND DATEADD(month, DATEDIFF(month, 0, ob.OrderDate), 0) = DATEADD(month, DATEDIFF(month, 0, omi.OrderDate), 0)
AND DATEADD(month, DATEDIFF(month, 0, ob.OrderDate), 0) = @Month
Betrachten Sie die "Kombinieren UND & OR" auf http://www.w3schools.com/Sql/sql_and_or.asp für die quicki Die Google-Idee hier. –
Sie müssen mindestens die Tabellenstruktur teilen. und teile, was du bisher versucht hast. So funktioniert SO. –
"Brot" UND (Milch oder Eis) ist logisch, wie Sie es schreiben würden –