我想我需要一個提示,指出要走向哪個方向。 繼續我的other question,我試圖在3個表上執行sql查詢,並使用MySQL。SQL:JOIN和其他表的基礎知識
表1:產品 「基地」 信息
id, productnumber
1,45
表2: 「country_specifics」 爲每個產品ID
id, countrycode,name
1,"DE","Produkt 1"
1,"US","Product 1"
好的,一個
SELECT B.id,C.name,C.countrycode
FROM base AS B
INNER JOIN country_specifics AS C ON B.id=C.id
WHERE B.id=1 AND C.countrycode='US';
給我我想要的:
1,"Product 1","US"
但是:
我的第三個表:
表3: 「功能」 爲每個產品ID
id,feature
1,"feature 1"
1,"feature 2"
和我的查詢的最終結果應該以某種方式additionaly包含產品具有的功能。 我想,有另外
INNER JOIN features AS F ON b.id=f.id
,但將返回兩行(我明白爲什麼):
1,"Product 1","US","feature 1"
1,"Product 1","US","feature 2"
,但我覺得這不是我想要的。 我要的是爲特徵域排序數組:
1,「產品1」,「美國」,「功能1,功能2」
結果。我知道(或者相當肯定)SQL中沒有數組,但最接近的是什麼?我可以在1個查詢中做到這一點嗎?顯然,我可以簡單地開始第二個查詢,但這是最好的選擇嗎? 對於哪個關鍵字我應該谷歌?
感謝您的閱讀,馬林巴
編輯
謝謝大家的幫助,真的!
我只是想澄清我的問題:我不一定需要一個數組或接近它的東西。我想了解什麼是最好的(最有效的,最不容易出錯的)方法是獲得「該產品的所有數據」。
如果您告訴我接受2行作爲結果,並且使用這是最好的方法,那麼我會這樣做。 我只是想當他們設計SQL時,他們想到了這個問題並準備好了一個解決方案,我正在努力尋找解決方案。
編輯2:
我再次道歉誤導別人以爲我需要一個逗號分隔的字符串。我試圖說明我期待什麼樣的數據。
我欣賞指向group_concat
的指針,但我有感覺stored procedure
與2查詢,由jmacinnes和薩欽概述,是更清潔的方式。
謝謝,stackoverflow社區。
這是針對Sybase ASE,SQL Server,Oracle,MYSQL嗎? – 2011-12-13 17:12:05
mysql - 從第一段的第二句開始。 – 2011-12-13 17:18:24
@marimba - **你使用MySQL嗎? (在解決這個問題時,不同風格的SQL有不同的方法。) – 2011-12-13 17:49:09