2012-04-06 77 views
1

也許這只是太早了,但我可以'弄清楚爲什麼我無法得到我的第五張表的查詢加入我當前的查詢語句。添加第5張表加入

這裏是我當前的查詢

SELECT xp.productid, xp.product, xc.classid, xco.optionid, xco.option_name, count(xi.optionid) as cnt 
FROM xcart_products xp 
INNER JOIN xcart_classes xc ON xp.productid = xc.productid AND xc.class = 'Color' 
INNER JOIN xcart_class_options xco ON xc.classid = xco.classid 
LEFT JOIN xcart_images_D xi ON xi.optionid = xco.optionid 
GROUP BY xp.product, xco.optionid 
ORDER by xp.product DESC 

我試圖添加具有表設置非常相似,xcart_images_D

JOIN xcart_images_T xiT ON xi.id = xiT.id 

截至目前下面的查詢,我的結果約去在添加連接之後,再添加2000到20。

+2

你是不是指'JOIN xcart_images_T xiT ON xi.id = xiT.id'(你在'xi.id = xiT.id'之前有一個'xiT')? – JScoobyCed 2012-04-06 14:25:17

+1

有什麼問題?你看到一個錯誤?獲得意外的結果?我們不知道發生了什麼? – 2012-04-06 14:27:52

+0

@JScoobyCed你對此絕對正確,我的這種疏忽感謝你。 SamDeHaan我很抱歉,這是查詢不起作用。 JScoobyCed能夠指出語法錯誤。在此之後,它是左加入BryceAtNetwork23指出。謝謝你指出我應該包含更多信息,你完全正確。 – Eric 2012-04-06 14:53:28

回答

1

通過這樣做:

JOIN xcart_images_T xiT ON xi.id = xiT.id 

您正在使用JOIN xcart_images_t依賴於你(十一)xcart_images_D表。所以如果你的xcart_images_D表不匹配,那麼你的xcart_images_T也不會返回一個匹配。

也通過指定JOIN,您隱式指示INNER JOIN,這也可能是您的問題的一部分。如果在xcart_images_T中有一個匹配不是必需的,那麼它應該是一個LEFT JOIN。

的xcart_images_T好像它類似於xcart_images_D,所以在嘗試了LEFT JOIN和使用xco.optionid作爲加入密鑰:

LEFT JOIN xcart_images_T xiT ON xiT.id = xco.optionid 

另外,如果你希望看到來自xcart_images_T或任何領域xcart_images_D,你需要將這些添加到你的SELECT中。看看是否有幫助。

+0

你知道了Bryce,謝謝你的幫助。我最終將xiT.id與xp.productid鏈接起來,但不管怎樣,不僅謝謝你指點我正確的方向,而且還要解釋。 – Eric 2012-04-06 14:54:54

+1

@Eric嘿,沒問題!我很高興你的工作。 – Aaron 2012-04-06 15:04:25