A CREATE VIEW
Anweisung gibt keinen resultset.
Eine SELECT
-Anweisung kann eine leere Ergebnismenge zurückgeben. Aber wir erwarten, dass die SELECT
-Anweisung in Ihrer Sichtdefinition entweder eine einzelne Zeile zurückgibt oder einen Fehler auslöst.
Ich schlage vor, dass Sie ein wenig brechen.
1) Welches Problem wird durch die CREATE VIEW
Anweisung gelöst. Warum brauchst du eine Aussicht?
2) Bevor Sie eine CREATE VIEW
Anweisung schreiben, zuerst entwickeln und testen eine SELECT
Anweisung, die die erforderliche resultset zurückgibt. Tun Sie das vor Sie setzen das in eine Sichtdefinition.
Ich empfehle auch dringend, dass Sie alle Spaltenreferenzen in der SELECT-Anweisung entweder mit dem Tabellennamen oder (vorzugsweise) einem kurzen Tabellenalias qualifizieren.
Wenn Sie eine Zeile für jeden Cust
mit einer Aggregatfunktion (z SUM
) in der SELECT-Liste zurückkehren mögen, dann eine entsprechende GROUP BY
Klausel zu Ihrer SELECT
Anweisung hinzufügen.
Es ist nicht klar, warum wir eine SUM-Aggregatfunktion verwenden möchten.
Der Unterschied zwischen "credit_limit" und "balance" wäre das verfügbare (verbleibende) Guthaben. Ein negativer Wert würde anzeigen, dass der Saldo das Kreditlimit überschritten hat.
Wenn wir nur Zeilen für Kunden zurückgeben möchten, die ihr Kreditlimit überschritten haben, können wir eine WHERE-Klausel hinzufügen.
SELECT CONCAT(r.last,r.first) AS Rep
, CONCAT(c.last,c.first) AS Cust
, c.credit_limit - c.balance AS available_credit
FROM hscust c
JOIN hssales_rep r
ON c.sales_rep=r.repid
WHERE c.credit_limit - c.balance < 0
ORDER
BY CONCAT(r.last,r.first)
, CONCAT(c.last,c.first)
, c.custid
Auch hier erhalten eine SELECT
Anweisung arbeiten (die erforderliche resultset Rückkehr) vor Sie es in einer CREATE VIEW
wickeln.
Alle Beispieldaten, die Sie teilen können? –
Ich habe die Tabellen, an denen ich arbeite, zur Frage –
hinzugefügt. Ihre Aussage scheint zu funktionieren.Sie müssen die Beispieldaten wirklich in einer ** create table **, gefolgt von ** insert ** statements, nicht in einem Bildformat bereitstellen, damit wir das Problem reproduzieren können. –