2 つのテーブルを持つ以前のクエリで機能する SQL クエリを作成しようとしていますが、それは非常に簡単でした。しかし、これは私を6時間狂気に駆り立てています。
私が抱えている問題は、すべての基準が一致する場合にのみ結果が表示されることであり、それは望ましくありません。データベースにエントリがない場合、フィールドを空白に戻したいです。
テーブルがあり、orderrefno を表示したいと考えています。この時点で、納品書が作成されているかどうかを確認し、作成されている場合は、請求書が作成されているかどうかを確認したいと考えています。次に、それぞれの番号をレポートに戻しますが、存在しない場合は. 納品書が作成されている場合は、注文番号と他の両方が空白になるか、請求書だけが空白になるはずです。
内部、左結合、右結合、完全を使用してクリスタルでクエリを作成しようとしましたが、請求書が存在しない場合は、配送番号と注文番号をリストしたいのですが、そうではありません。
Delphi と v studio のデータソースとマスター ソースでこれを行うことができますが、他の簡単なものは遅いため、SQL を実行したいと考えています。
私のテーブルは
- 計画
- 注文
- コールオフ
- 配達に電話するlink
- 配達
- 請求書への配送link
- 請求書
テーブルは次のようにリンクされています。
Project.id が主要なエントリ ポイントです。それで
Order.projectid -- プロジェクト.id
Calloff.orderid -- order.id
Callofftodeliverylink.deliveryid -- calloff.id
Delivery.id -- callofftodeliverylink.deliveryid
Deliverytoinvoicelink.deliveryid -- delivery.id
Invoice.id -- deliverytoinvoicelink.invoiceid
大変感謝します
編集:
コードを追加しました。FROM セクションが混乱していて申し訳ありません。Crystal でリンク フィールドを描画し、クエリを表示するように求めたところ、これが表示されました。
SELECT
"Projects"."ID", "Orders"."IntOrderNo", "Deliveries"."DeliveryNo", "Projects"."InternalRef",
"CallOffs"."ID", "Customers"."Name", "Contacts"."Name", "Invoices"."InvoiceNo"
FROM
{oj (((((("GNManager"."dbo"."Invoices" "Invoices" LEFT OUTER JOIN "GNManager"."dbo"."DeliveryToInvoiceLink" "DeliveryToInvoiceLink" ON "Invoices"."ID"="DeliveryToInvoiceLink"."InvoiceID") LEFT OUTER JOIN "GNManager"."dbo"."Deliveries" "Deliveries" ON "DeliveryToInvoiceLink"."DeliveryID"="Deliveries"."ID") LEFT OUTER JOIN "GNManager"."dbo"."CallOffToDeliveryLink" "CallOffToDeliveryLink" ON "Deliveries"."ID"="CallOffToDeliveryLink"."DeliveryID") LEFT OUTER JOIN "GNManager"."dbo"."CallOffs" "CallOffs" ON "CallOffToDeliveryLink"."CallOffID"="CallOffs"."ID") LEFT OUTER JOIN ("GNManager"."dbo"."Projects" "Projects" LEFT OUTER JOIN "GNManager"."dbo"."Orders" "Orders" ON "Projects"."ID"="Orders"."ProjectID") ON "CallOffs"."OrderID"="Orders"."ID") INNER JOIN "GNManager"."dbo"."Customers" "Customers" ON "Orders"."CustomerID"="Customers"."ID") INNER JOIN "GNManager"."dbo"."Contacts" "Contacts" ON "Orders"."ContactID"="Contacts"."ID"}
WHERE
"Projects"."InternalRef"='12/4169'
ORDER BY
"Projects"."InternalRef" DESC, "Orders"."IntOrderNo" DESC
上記のステートメントは機能し、必要なものはすべて生成されますが、Invoices にエントリがある場合のみです。請求書が空白の場合、何も表示されません。