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,或者可能没有关系,因为它是同一个表。