-1

別の場所に 2 つのテーブルがあります

最終結果は

VendorName  InvoiceNumber  InvoiceTotal

VendorNameというテーブルにありますVendors

InvoiceNumberInvoiceTotal呼ばれるテーブルにありますInvoices

仕入先に請求書がない場合でも、結果にすべての仕入先を表示する必要があります。最大の請求書の合計を最初の DESC に表示し、仕入先名をアルファベット順に並べ替えます。

請求書を自分に結合しようとしました

SELECT VendorName FROM Vendors 

しかし、構文がわかりません:/

4

5 に答える 5

1

を使用しLEFT JOINて、次のような請求書のないベンダーを含めます。

SELECT 
  v.VendorName, i.InvoiceNumber, i.InvoiceTotal
FROM Vendors v
LEFT JOIN Invoices i ON v.Id = i.VendorID
ORDER BY i.InvoiceTotal DESC, v.VendorName ASC
于 2012-11-08T14:34:36.637 に答える
1

を使用しLEFT JOINて、2 つのテーブルを関連付ける列で 2 つのテーブルを結合します。を使用すると、テーブルにエントリがない場合でもLEFT JOINすべてが返されます。vendorsinvoices

select v.vendorname,
    i.invoicenumber,
    i.invoicetotal
from vendors v
left join invoices i
    on v.vendorid = i.vendorid  -- this is the column relating the two tables
order by i.invoicetotal DESC, v.vendorname ASC

JOIN構文を学習するのに助けが必要な場合は、ここに結合の優れた視覚的な説明があります

于 2012-11-08T14:36:37.987 に答える
1

が必要ですOUTER JOIN。PK/FK をVendorID次のように仮定します。

SELECT v.VendorName, i.InvoiceNumber, i.InvoiceTotal
FROM Vendors v
LEFT OUTER JOIN Invoices i ON v.VendorID = i.VendorID
ORDER BY v.VendorName   ASC
      ,  i.InvoiceTotal DESC
于 2012-11-08T14:37:19.610 に答える
1

試す:

SELECT Vendors.VendorName, Invoices.InvoiceNumber, Invoices.InvoiceTotal 
FROM Vendors LEFT JOIN Vendors.VendorID on Invoices.VendorId 
ORDER BY Invoices.InvoiceTotal DESC

ベンダーをまとめてグループ化しますか、それともベンダーを結果セットに複数回含めることができますか? たとえば、SUM(Invoices.InvoiceTotal) を使用して、InvoiceTotals の合計を取得できます。

于 2012-11-08T14:40:30.577 に答える
0

次のような意味ですか:

select VendorName
      ,Count(InvoiceAmount) As InvoiceNumber
      ,Sum(InvoiceAmount) As InvoiceTotal
  from Vendor
  left join Invoices on Vendor.VendorId = Invoices.VendorId
 group by VendorName
 order by 3 Desc
于 2012-11-08T14:35:43.343 に答える