0

我有一张桌子,上面有描述建筑物状况的句子。这些句子有的属于“完成”的范畴,有的属于“准备”的范畴。我还有两张表(完整的,准备好的),其中包括建筑物 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 行

方案

我试着做一个图表,但不幸的是我没有足够的声望点来上传,所以它隐藏在这里:。

方案

4

1 回答 1

0

这是真的,因为您使用左连接,所以您将获得不止一行,在 Complete 中,您有 2 个 ID 值为 1,左连接为您提供 Complete 中值为 1 的所有行。您真正想要的查询是什么,我没有'不太明白你的查询我的意思是你想要的输出。(还有什么是外键)

于 2012-09-28T17:56:09.340 回答