2013-08-19 129 views
0

我一直遇到查詢連接4個表返回太多的結果。它在95個結果附近返回,有些列重複10次,我認爲它應該只有3個,並且數據根本不匹配。爲什麼這個MySQL查詢返回如此多的結果?

我開始寫這篇文章,並認爲我會在sqlfiddle上很好地編寫代碼,以便於解釋,但是當我在那裏運行查詢時,它返回的結果就像我想要的一樣,結果爲34,所有數據行都應該在哪裏。我想知道爲什麼查詢的工作原理,因爲我希望它在那裏,而不是在我的服務器上。我看到他們已經添加了一個'額外的:使用where;使用臨時;在視圖執行鏈接中使用filesort。那麼,我能做些什麼來使這個結果清晰?我正在嘗試創建一個顯示有關定價信息的表格。我在這裏包含了查詢以供參考。

SELECT DISTINCT 
    prices.sku, 
    prices.base_price, 
    prices.min_quantity, 
    price_breaks.break_point, 
    price_breaks.price, 
    price_breaks.bonus, 
    product_options.product_code, 
    product_options.size, 
    product_types.category_type, 
    product_types.product_type_name 
FROM prices 
LEFT JOIN price_breaks ON price_breaks.sku = prices.sku 
LEFT JOIN product_options ON product_options.sku = prices.sku 
LEFT JOIN product_types ON product_options.product_code = product_types.product_code 
WHERE prices.group = "a" 
ORDER BY product_code ASC, sku ASC, break_point ASC 

這裏的小提琴: http://sqlfiddle.com/#!2/67c14/1/0

感謝任何見解。

回答

0

左側連接右側的一個或多個表必須具有多個匹配連接行。

+0

哦,廢話。當然。 SKU不是唯一的。添加 AND price_breaks.group = prices.group 完全解決了這個問題。我是一個傻瓜。謝謝。 –

相關問題