我想建立一個MySQL查詢,使用查找表中的行作爲結果集中的列。如何在查詢表中將行用作MySQL查詢中的列?
LookupTable中
id | AnalysisString
1 | color
2 | size
3 | weight
4 | speed
ScoreTable
id | lookupID | score | customerID
1 | 1 | A | 1
2 | 2 | C | 1
3 | 4 | B | 1
4 | 2 | A | 2
5 | 3 | A | 2
6 | 1 | A | 3
7 | 2 | F | 3
我想這將使用在查詢相關LookupTable中的行,列的查詢,這樣我可以得到這樣一個結果:
customerID | color | size | weight | speed
1 A C D
2 A A
3 A F
問題的原因在於可能會將其他行添加到LookupTa ble,並且查詢應該是動態的並且不具有硬編碼的查找ID。也就是說,這將工作:
SELECT st.customerID,
(SELECT st1.score FROM ScoreTable st1 WHERE lookupID=1 AND st.customerID = st1.customerID) AS color,
(SELECT st1.score FROM ScoreTable st1 WHERE lookupID=2 AND st.customerID = st1.customerID) AS size,
(SELECT st1.score FROM ScoreTable st1 WHERE lookupID=3 AND st.customerID = st1.customerID) AS weight,
(SELECT st1.score FROM ScoreTable st1 WHERE lookupID=4 AND st.customerID = st1.customerID) AS speed
FROM ScoreTable st
GROUP BY st.customerID
直到有第五行添加到LookupTable。 。 。
也許我打破了整個關係模型,並且必須在後端PHP代碼中解決這個問題?
感謝指點/指導。
tom
當你說「更正常」時,你的意思是更規範嗎?如果沒有殘餘的「id」列,則「ScoreTable」將在6NF中。 – 2010-05-12 14:13:19