2012-01-28 146 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