2016-12-03 5 views
-5

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.

+0

Betrachten Sie die "Kombinieren UND & OR" auf http://www.w3schools.com/Sql/sql_and_or.asp für die quicki Die Google-Idee hier. –

+4

Sie müssen mindestens die Tabellenstruktur teilen. und teile, was du bisher versucht hast. So funktioniert SO. –

+1

"Brot" UND (Milch oder Eis) ist logisch, wie Sie es schreiben würden –

Antwort

0

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 
Verwandte Themen