2011-07-29 93 views
0

幫我看看這個查詢: 我有3個這種結構的表。MySql根據另外兩個表的條​​件查找一個表中的數據

items_to_groups(ITEM_ID | GROUP_ID)

item_to_regions(ITEM_ID | REGION_ID)

項目 [一堆列]

,我需要選擇在每一行商品商品上有一個item_id匹配的表_to_groups表WHERE 組= X並且對item_to_regions表WHERE 區域= Y

目前我的代碼是一種可怕的子查詢與循環和所有的ITEM_ID匹配。

這樣做會更好嗎? 我想過關於JOIN等,但不能真正讓我的頭在如何做到這一點。

回答

1
SELECT bunch_of_columns 
FROM items i 
INNER JOIN items_to_groups ig ON i.id=ig.item_id 
INNER JOIN items_to_regions ir on i.id=ir.item_d 
WHERE ir.region_id=y 
AND ig.group_id=x 

查看關於MySQL的JOIN文檔。連接對關係數據庫很重要。 正如你所說,你很難掌握連接,請看Jeff Atwood的A Visual Explanation of SQL Joins。也許它有幫助。

+0

我相信我。但是這些JOINS是我的大敵。 我需要這些現實生活中的情境才能讓我的頭腦得到解決。謝謝。 –

+0

@Ericko編輯了我的答案,其中包含一個更多鏈接到codinghorror。看看它 :) – Jacob

0
SELECT colums 
FROM items 
INNER JOIN items_to_groups ON items.item_id = items_to_groups.item_id AND group_id = x 
INNER JOIN items_to_regions ON items.item_id = items_to_regions.item_id AND region_id = y 
0
SELECT * FROM items 
JOIN items_to_groups ON (items.item_id = items_to_groups.item_id AND group_id = ?) 
JOIN items_to_regions ON (items.item_id = items_to_regions.item_id AND region_id = ?) 
GROUP BY items.item_id 
相關問題