Ich habe zwei Tabellen Orders
und Customers
. Orders
enthält die folgenden Spalten: OrderID
, CustomerID
. Customers
enthält Spalten: CustomerID
, CustomerName
. Ich habe ein paar Datensätze von Customers
, die keine Bestellungen haben. Also möchte ich alle einzigartigen Kunden (auch wenn sie keine Bestellungen haben) und Bestellungen bekommen.SQL: Wie gilt distinct nur für eine Spalte aus vielen?
ich möchte es erhalten, indem Sie diese Abfrage mit:
SELECT DISTINCT(CustomerName) OrderID, Orders.CustomerID, CustomerName
FROM Customers
LEFT JOIN Orders ON Orders.CustomerID = Customers.CustomerID
ORDER BY CustomerName;
Aber es OrderID
Spaltenwerte durch CustomerName
Werte ersetzen. Deshalb sollte ich die folgende Abfrage verwenden, um das gewünschte Ergebnis zu erhalten.
SELECT OrderID, CustomerID, CustomerName
FROM
(
SELECT DISTINCT(CustomerName) OrderID, Orders.CustomerID, CustomerName
FROM Customers
LEFT JOIN Orders ON Orders.CustomerID = Customers.CustomerID
ORDER BY CustomerName
);
Gibt es Fehler in meiner ersten Abfrage? Ist es möglich, es zu beheben?
Erste Beratung, Sie vermissen ein Komma "" nach dem select distinct (Kundenname) , Bestell-Nr., – DanieleO
Deutliche Werke pro Reihe. Was würden Sie von einem Kunden erwarten, der mehr als eine Bestellung hat? –
@ZoharPeled Es ist nur eine Beispielabfrage. Ich weiß, dass es bedeutungslos ist, aber ich möchte alle einzigartigen Kunden bekommen. Ich weiß, dass ein Kunde mehr als eine Bestellung erhalten kann. –