[英]multiple joins to two tables holding fk's
我正面臨一種奇怪的行為,我必須將其解釋為錯誤,鑒於計算機始終嚴格執行您告訴他們的操作,因此我必須告訴它錯誤的信息:)
用例:
我有一個名為orders_details
的表,該表包含感興趣的列,包括外鍵, order_id
和product_id
。
我也有一個名為orders
的表,它具有order_id
的PK
,還有一個名為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.