musiałem spojrzeć na różnych odpowiedzi tu i zrobiliśmy kilka eksperymentów.
W szczególności używam MariaDB 10.1.
Przez „proste”, co można zrobić, co Robert D sugerował w swoim komentarzu:
SELECT Price_Per_SqFt, (Price_Per_SqFt/2) AS col1, (SELECT col1 + 1) AS col2 FROM Items
Jeśli używasz jakiegoś funkcji zbiorczej z sprzężenie wewnętrzne nie mogą korzystać z tego, ale ty można połączyć to podejście z wewnętrzną dołączyć podejście następująco (NB „podatek od sprzedaży” VAT = ... i NB w polach danych finansowych w walucie zwykle mają 4 miejsc po przecinku, myślę, że to historyczny ...)
SELECT
invoices.invoiceNo, invoices.clientID, invoices.Date, invoices.Paid,
invoicesWithSubtotal.Subtotal,
ROUND(CAST(Subtotal * invoices.VATRate AS DECIMAL(10, 4)), 2) AS VAT,
(SELECT VAT + Subtotal) AS Total
FROM invoices
INNER JOIN
(SELECT Sum(invoiceitems.Charge) AS Subtotal, invoices.InvoiceNo FROM invoices
INNER JOIN invoiceitems ON invoices.InvoiceNo = invoiceitems.InvoiceNo
GROUP BY invoices.InvoiceNo) invoicesWithSubtotal
ON invoices.InvoiceNo = invoicesWithSubtotal.InvoiceNo
Chciałem użyć powyższego, aby utworzyć View
, aby wyświetlić listę faktur wi th ich podsumy, VAT i sumy ... okazało się, że MariaDB (i prawie na pewno MySQL) nie pozwala na zagnieżdżanie w klauzuli FROM
. Jednak można to łatwo rozwiązać, tworząc pierwszy View
, który zawiera listę InvoiceNo
i Subtotal
, a następnie tworzy drugi View
, który odwołuje się do pierwszego. Z punktu widzenia wydajności nie mam pojęcia o tym rodzaju układu podwójnie-View
.
Hodowlana Kucyk Umysł? "@total_sale: =" czy to za mało deklaracji? – rzetterberg
To ustawienie zmiennej, a nie deklarowanie jej. Deklaracja oznacza użycie instrukcji 'SET' lub pochodnego widoku tabela/wiersz. –
"Można również przypisać wartość do zmiennej użytkownika w instrukcjach innych niż SET.W tym przypadku operator przypisania musi być: = i nie =, ponieważ ten drugi jest traktowany jako operator porównania = w instrukcjach innych niż SET:" – rzetterberg