簡體   English   中英

多個聯接到兩個持有fk的表

[英]multiple joins to two tables holding fk's

我正面臨一種奇怪的行為,我必須將其解釋為錯誤,鑒於計算機始終嚴格執行您告訴他們的操作,因此我必須告訴它錯誤的信息:)

用例:
我有一個名為orders_details的表,該表包含感興趣的列,包括外鍵, order_idproduct_id

我也有一個名為orders的表,它具有order_idPK ,還有一個名為product_details的表,它具有product_id列的PK

要求 :

選擇所有帶有其各自的訂單詳細信息和產品詳細信息的訂單。

我試過了

SELECT ord.shipping_ids, ord.order_id, ord.firstname, ord.lastname, ord.order_id,
ord.payment_id, det.product_id, ord.timestamp, prd.product

FROM  `cscart_orders` AS ord  

LEFT JOIN cscart_order_details AS det ON ord.order_id = det.order_id

LEFT JOIN cscart_product_details AS prd ON prd.product_id = det.product_id

現在,所有product_details列的結果都為null ,所以我沒有得到所需的東西。

如果我將第二個聯接替換為內部聯接,則會得到損壞的數據(每行的多個副本,而我沒有注意到任何邏輯順序)。

所以,我想念什么? 這不是聯接應該起作用的方式嗎?

編輯:

http://sqlfiddle.com/#!2/f98463/2 -sqlfiddle,不知道sql是否存在小提琴,很抱歉沒有首先發布它。

第二次編輯:

我的數據庫表存在數據完整性問題:(有人未正確設置FK和PK,我的原始查詢確實對示例數據有效,感謝您將我指向正確的位置來仔細檢查自己

您給定的查詢在sql小提琴上工作正常如果您提供期望的輸出,那么我們可以為您提供幫助。

SELECT ord.shipping_ids, ord.order_id, ord.firstname, ord.lastname, ord.order_id,
ord.payment_id, det.product_id, ord.timestamp, prd.product

FROM  `cscart_orders` AS ord  

LEFT JOIN cscart_order_details AS det ON ord.order_id = det.order_id

LEFT JOIN cscart_product_details AS prd ON prd.product_id = det.product_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM