2012-01-28 80 views
1

我有一些表的數量。在每個表中都有一個字段id(int)。在每個表中可以用同一個id多個記錄。例如:MySQL查詢幫助SELECT JOIN

id1 val1 id1 val2 id1 val3 
id1 val4 id1 val5 id1 val6 

我需要一個選擇查詢巫婆給我

val1 val2 val3 
val4 val5 val6 

我試圖

SELECT * FROM table1 
INNER JOIN table2 ON table1.ban_id = table2.ban_id 
INNER JOIN table3 ON table1.ban_id = table3.ban_id 
INNER JOIN table4 ON table1.ban_id = table4.ban_id 
INNER JOIN table5 ON table1.ban_id = table5.ban_id 
INNER JOIN table6 ON table1.ban_id = table6.ban_id 

而且按照我的理解它給我了我的價值觀的所有可能的排列。

UPDATE1
讓我geve你更多的信息。我正在寫一個應用程序在巫婆用戶可能會被禁止在多種方式,例如通過nick ip guid(一些guid-id)
也在此數據庫的原因存儲這個禁令。所以有一種情況是,有一條記錄帶有guid ip nick,但有多個原因或多個缺口女巫響應相同的id。
http://pastebin.com/HQs4XxDm - 這是表格的結構

+0

架構表的請.. – 2012-01-28 10:30:44

+0

差表正常化,每行應該有自己的ID,值,而不是每多個相同的行...除非這僅僅是張貼問題的差格式。哪些讓我到下一個部分......在你有了可能的值之後,你特別想將它們分別變成3個值的行嗎?爲每個返回的行結果創建值爲3的模擬交叉表的任何特定原因? – DRapp 2012-01-28 11:08:02

+0

看起來你最好把所有這些放在一張桌子上。您可以設置NULL值以獲取不需要的詳細信息,例如如果你禁止IP地址或暱稱。 JOIN實際上是用於鏈接需要存儲在單獨表格中的數據,例如, '「SELECT cats.name,meals.title FROM cats LEFT JOIN meals ON cats.favourite_meal = meals.id」'可能會返回Garfield | Lasagne' – SimonMayer 2012-01-30 15:31:33

回答

1

你現在在做什麼?如果您提供一些調試信息,則更容易提供幫助。

我希望你對模糊的列名有問題。嘗試

SELECT 
`table1`.`id1` AS `t1_id1`, 
`table2`.`id1` AS `t2_id1`, 
`table3`.`id1` AS `t3_id1`, 
`table4`.`id1` AS `t4_id1`, 
`table5`.`id1` AS `t5_id1`, 
`table6`.`id1` AS `t6_id1` 
FROM table1 
INNER JOIN table2 ON table1.ban_id=table2.ban_id 
INNER JOIN table3 ON table1.ban_id=table3.ban_id 
INNER JOIN table4 ON table1.ban_id=table4.ban_id 
INNER JOIN table5 ON table1.ban_id=table5.ban_id 
INNER JOIN table6 ON table1.ban_id=table6.ban_id