簡體   English   中英

MYSQL從同一列中選擇多個值作為行

[英]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

當然,沒有用於condotown_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.idcommunity.namecondo.pricecondo.ratetown_home.pricetown_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM