数据从两个表分成两列

时间:2012-09-28 17:31:28

标签: mysql join subquery

我有一张表格,上面写着描述建筑物状况的句子。这些句子中的一些属于“完整”类别,一些属于“准备”类别。我还有两个表(完整的,准备好的),包括建筑物ID和句子ID。因此,每个建筑物由两个表格描述(完整,准备)。我想创建一个查询,其结果将有两列 - >建筑物的描述。

-----------       -----------------------     ----------------------
 SENTENCES              COMPLETE                     PREPARING
-----------       -----------------------     ----------------------
ID  |  text       ID_HOUSE  | ID_SENTENCES     ID_HOUSE | ID_SENTENCES
-----------       ------------------------    ------------------------                
1   |  One            1     |       1               1   |       3
2   |  Two            1     |       2               2   |       1
3   |  Tree           2     |       2  

我想要这样的事情:(对于房子1)

COMPLETE     |      PREPARING
------------------------------
   One       |         Tree
   Two       |         NULL

我创建了这个,但它不起作用。

SELECT s.text AS complete, 
(
  SELECT s.text
  FROM sentences AS s
  LEFT JOIN preparing AS p ON s.id = p.id_sentences
  WHERE s.id_house = 1
) AS preparing
FROM sentences AS s
LEFT JOIN complete AS c ON s.id = c.sentences
WHERE s.id_house = 1

这就是我得到的

  

1242 - 子查询返回超过1行

方案

我尝试制作图表,但遗憾的是我没有足够的信誉点来上传,所以它隐藏在这里:。

Scheme

1 个答案:

答案 0 :(得分:0)

这是正确的,因为你使用左连接,你将获得多行,在完成中你有2个ID值为1,左连接为你提供所有行的完整值和值1.实际上你想要的查询是什么,我还不太明白你的查询是什么意思你想要的输出。 (还有什么外键)