[英]MYSQL Selecting multiple values from the same column as a row
我有兩張桌子
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_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_home.price
, town_home.rate
SELECT
community.id,
community.name,
condo.price,
condo.rate
FROM
community, property condo
WHERE
community.id = condo.community_id;
這應該解決。
嘗試這個:
SELECT * FROM community LEFT OUTER JOIN property ON community.id = property.community_id;
這應該將ID字段上的兩個表連接起來,因此您應該在完整的一行中包含所有信息。 如果任何內容為null,則該行也應存在。 如果列出的多個屬性具有相同的社區ID,則所有屬性都應出現在結果中。
PS-我使用的是PostgreSQL,而不是MYSQL,因此語法可能有所不同。 讓我知道它是如何工作的!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.