我遇到查詢問題,問題是我離開連接三次從同一個表。具有多個連接的查詢將只返回其中一個我的左連接
有問題的查詢是這樣的:
SELECT
o.order_id,
n.title,
c.first_name,
tdv5.tid,
tdv6.name,
tdv8.name AS settlement_month
FROM orders o
join products p on o.product_id = p.nid
join node n on p.nid = n.nid
join customers c on o.customer_email = c.customer_email
join term_node tn on tn.nid = p.nid
join term_data tdv6 on tn.tid = tdv6.tid AND tdv6.vid = 6
left join term_data tdv5 on tn.tid = tdv5.tid AND tdv5.vid = 5
left join term_data tdv8 on tn.tid = tdv8.tid AND tdv8.vid = 8
當我使用這個查詢只有先使用tn.tid將加入公司。例如,如果最後三個唯一的加入是這樣的:
join term_data tdv6 on tn.tid = tdv6.tid AND tdv6.vid = 6
它會正常工作。與
left join term_data tdv5 on tn.tid = tdv5.tid AND tdv5.vid = 5
而且
left join term_data tdv8 on tn.tid = tdv8.tid AND tdv8.vid = 8
一樣的,但是當我將它們組合起來,他們不會在所有的工作。當我組合三個查詢時,只有tdv6有效。
你有什麼問題的建議嗎?謝謝。
然後它根本不會返回任何行。我需要不返回任何內容的左連接的NULL值。 – 2010-11-19 14:36:54
將條件放在WHERE中會使您的左連接成爲內連接。 – GolezTrol 2010-11-20 23:23:47