2013-04-24 118 views
0

我認爲INNER JOIN等同於WHERE子句中的JOIN。當我使用WHERE子句進行連接時,會返回行。但是如果我進行INNER JOIN,那麼沒有行輸出。我得到的結果是沒有匹配。 我錯了,還是我做錯了什麼?PostgreSQL INNER JOIN與WHERE子句連接

這些是加入相當於?:

腸子JOIN:

account_move_reconcile_line_applied amrla 
INNER JOIN account_move_reconcile_line amrl ON (amrla.credit_line_id = amrl.id) 
INNER JOIN account_move_reconcile amr ON (amrl.credit_reconcile_id = amr.id) 
INNER JOIN account_move_line aml ON (aml.reconcile_partial_id = amr.id) 
INNER JOIN res_partner rp ON (aml.partner_id = rp.id) 

在WHERE子句:

amrla.credit_line_id = amrl.id 
and amrl.partner_id = rp.id 
and amrl.credit_reconcile_id = amr.id 
and aml.reconcile_id = amr.id 
+0

檢查查詢計劃,他們可能會是相同的。 – wildplasser 2013-04-24 09:01:24

+0

對不起,我沒有看到在INNER JOIN中我使用了不同的ID .. – Andrius 2013-04-24 09:01:46

+2

'和aml.reconcile_id = amr.id'與'aml.reconcile_partial_id = amr.id'不一樣, 'aml.partner_id = rp.id'和'amrl.partner_id = rp.id'也不是。他們應該匹配嗎? – 2013-04-24 09:02:41

回答

1

有錯誤的ID在:

INNER JOIN account_move_line aml ON (aml.reconcile_partial_id = amr.id) 

它應該已經reconcile_i而不是reconcile_partial_id。

+1

感謝您的跟進。順便說一下,通過查看「解釋」計劃,有時可以更容易地發現這類事情。 – 2013-04-24 11:29:07