MYSQL从与行相同的列中选择多个值

MYSQL从与行相同的列中选择多个值,mysql,select,join,Mysql,Select,Join,我有两张桌子 table COMMUNITY id, name, etc. table PROPERTY id, community_id, type, price, rate, etc. 有四种可能的属性类型,社区可以有一种或多种不同类型的信息 我试图找出如何将每个社区的信息合并到一行中。 例如,我可能想得到一行,其中包括 community.id、community.name、condo.price、condo.rate、town_home.pri

我有两张桌子

table COMMUNITY
  id, 
  name, 
  etc.

table PROPERTY
  id,
  community_id,
  type,
  price,
  rate,
  etc.
有四种可能的属性类型,社区可以有一种或多种不同类型的信息

我试图找出如何将每个社区的信息合并到一行中。 例如,我可能想得到一行,其中包括

community.id、community.name、condo.price、condo.rate、town_home.price、town_home.rate

当然,
condo
town\u home
没有表,属性表中的属性类型由一列表示,社区可以有多个属性行

我的第一个想法是在带有别名的表上使用多个连接,但我似乎无法得到任何正常工作的连接

有什么建议吗?

试试这个:

SELECT * FROM community LEFT OUTER JOIN property ON community.id = property.community_id;
这将连接ID字段上的两个表,因此您应该有一个包含所有信息的完整行。如果有任何内容为null,则该行中也应存在该内容。如果列出了具有相同社区ID的多个属性,则它们都应出现在结果中

PS-我使用PostgreSQL,而不是MYSQL,因此语法可能有点不同。让我知道它是如何工作的

试试这个:

SELECT * FROM community LEFT OUTER JOIN property ON community.id = property.community_id;
这将连接ID字段上的两个表,因此您应该有一个包含所有信息的完整行。如果有任何内容为null,则该行中也应存在该内容。如果列出了具有相同社区ID的多个属性,则它们都应出现在结果中


PS-我使用PostgreSQL,而不是MYSQL,因此语法可能有点不同。让我知道它是如何工作的

您可以使用左连接进行此操作

SELECT c.id, c.name, condo.price, condo.rate, town_home.price, town_home.rate
FROM Community c
LEFT JOIN Property condo ON condo.community_id = c.id AND condo.type = 'condo'
LEFT JOIN Property town_home ON town_home.community_id = c.id AND town_home.type = 'town_home'

您可以使用左连接进行此操作

SELECT c.id, c.name, condo.price, condo.rate, town_home.price, town_home.rate
FROM Community c
LEFT JOIN Property condo ON condo.community_id = c.id AND condo.type = 'condo'
LEFT JOIN Property town_home ON town_home.community_id = c.id AND town_home.type = 'town_home'

我是那种不太喜欢使用连接的人,可能是因为我看不到使用连接的理由,或者我不需要连接。 无论如何,我会这样说:

由于两个表之间有一个链接,因此可以使用它们来提供所需的数据,只要有这个链接,就可以提供所需的任何字段

所以你说你想要这些字段:
community.id
community.name
condo.price
condo.rate
town\u home.price
town\u home.rate

    SELECT
        community.id,
        community.name,
        condo.price,
        condo.rate
    FROM
        community, property condo
    WHERE
        community.id = condo.community_id;

这应该可以解决问题。

我是那种不太喜欢使用连接的人,可能是因为我看不到使用连接的理由,或者我不需要连接。 无论如何,我会这样说:

由于两个表之间有一个链接,因此可以使用它们来提供所需的数据,只要有这个链接,就可以提供所需的任何字段

所以你说你想要这些字段:
community.id
community.name
condo.price
condo.rate
town\u home.price
town\u home.rate

    SELECT
        community.id,
        community.name,
        condo.price,
        condo.rate
    FROM
        community, property condo
    WHERE
        community.id = condo.community_id;

这应该可以解决问题。

这包括结果中的所有信息,但不包括一行。谢谢。这包括结果中的所有信息,但不是一行。谢谢,谢谢!我假设最后一个加入应该有town_home.type,或者可能没有关系,因为它是同一个表。谢谢!我假设最后一个连接应该有town_home.type,或者可能没有关系,因为它是同一个表。