将3个表连接到第一个表的多个列中

时间:2014-07-06 04:22:34

标签: mysql sql

我正在尝试规范化我的表并使用3个不同的表而不是只有一个巨大的表(因为每个人都告诉我规范化是正确的事情)。但是,我遇到了绊脚石。我有3个表:主题,边,行。

TOPICS:
id | topicname | topicdescription

ROWS:
id | topic_id | rowname | rowdescription

SIDES:
id | topic_id | sidename | sidedescription

一个主题可以有多行和多个边。

我想加入表格,以便我有这个主要结果(或类似的东西:

RESULTTABLE: 
topic_id | topicname | topicdescription | rowname0 | rowdescription0 | rowname1 | rowdescription1 | .... | sidename0 | sidedescription0 | sidename1 | sidedescription1 |...

我不知道每个主题会提前有多少行或多边,到目前为止我在stackoverflow上看到的所有解决方案都要求我提前知道在我做之前我将拥有多少行和边加入电话。

这是我尝试的,结果不是我想要的:

SELECT topics.id, topics.topicname, topics.topicdescription , 
       sides.sidename , sides.sidedescription, rows.rowname , 
       rows.rowdescription  
FROM `topics` 
 INNER JOIN sides 
 ON sides.topic_id = topics.id 
 INNER JOIN rows 
 ON rows.topic_id = topics.id WHERE topics.id=1

这会创建一个包含多行(我不想要)的表,而不是一个包含多列的表。

背景:我正在使用mysql 5.5,php 5.4。

1 个答案:

答案 0 :(得分:0)

我刚刚意识到我是如何误解你的问题的。

本主题可引导您获得所需的结果:Can a MySQL query turn rows into columns?

您真正需要的是数据透视表:http://en.wikibooks.org/wiki/MySQL/Pivot_table