Dies ist eine Hausaufgabe in Bezug auf SQL. Die zwei verwendeten Tabellen sind wie folgt, die darin enthaltenen Daten sind irrelevant.Eine andere SQL-Abfrage
Restaurants
RNum | RestaurantName | HQLocation
und die Auftragstabelle:
Orders
CNum | DNum | RNum | Quant | Price
Das Problem, das ich habe ist, dass ich nicht herausfinden kann, wie Restaurants angeben, die ihre nur Aufträge von Kunden-C200 haben. Die Abfrage ist so formuliert:
"Nennen Sie die Restaurants, deren einzige Bestellung (n) von Kunde C200 kam."
Ich habe versucht, dies eine Reihe von verschiedenen Möglichkeiten zu lösen und werde zwei, die ich dachte, wird funktionieren, obwohl weder getan, da die Antworttabelle sollte nur einen Datensatz enthalten.
Hier ist mein erster Versuch:
SELECT DISTINCT R.RestaurantName
FROM Orders AS O, Restaurants AS R
WHERE (O.RNum = R.RNum)
AND (O.CNum = 'C200')
und hier ist eine andere:
SELECT DISTINCT R.RestaurantName
FROM Restaurants AS R
WHERE EXISTS
(SELECT *
FROM Orders AS O
WHERE (O.RNum = R.RNum)
AND (O.Rnum = 'C200'))
Ich habe viel Mühe, ohne alle anderen Möglichkeiten und alle meine Anfragen immer mehr zurückkehr als ein Datensatz. Gibt es eine Möglichkeit, verschachtelte Abfragen (keine Joins) zu verwenden?
dank ich dies ein –
versuchen geben werde, die funktionierten, würde Ich mag wissen, was genau die if-Anweisung obwohl tut, vor allem des“1,0" Teil davon, nochmals vielen Dank @ June7 –
Der Aggregat Summe addiert bedingt 1 für jeden Datensatz, der kein C200 ist, und addiert 0 für jedes C200. Das heißt, wenn das Sum-Ergebnis für ein Restaurant 0 ist, gibt es nur C200 für dieses Restaurant. – June7