2013-04-03 41 views
0
table 1 
-------- 
pid | name 
1 someone 
2 another 


table2 
-------- 
bid | valu 
1  drum 
2  guitar 
3  flower 
4  cake 


table3 
------ 
id | pid | bid | pref 
1 1  3  yes 
2 1  1  maybe 
3 1  2  no 
4 2  4  definately 
5 2  2 
6 2  3  no 

所以串連行,你可以看到我在第三個是用於一些其他數據一起創建表1和2之間的映射3個簡單的表。現在我需要編寫一個查詢,顯示基於pid在連接字符串的valupref我怎麼在一個MySQL查詢

所以對pid = 1,預期輸出是一樣的東西 flower yes, drum maybe, guitar no ....所以我如何寫這個查詢?

我想(幾乎瞎猜測):

SELECT opa.name, GROUP_CONCAT(CONCAT(opb.valu,' ',opc.pref) SEPARATOR ',') AS myChoice 
From 
    table_1 opa 
INNER JOIN table_3 opc ON opc.pid = opa.pid 
INNER JOIN table_2 opb ON opb.bid = opc.bid 

任何幫助表示讚賞。

+0

這應該有助於http://stackoverflow.com/questions/4336985/can-a-mysql-query-turn-rows -INTO柱 – nandu

回答

2

查詢是正確的,你只是忘記了GROUP BY

SELECT opa.name, GROUP_CONCAT(CONCAT(opb.valu,' ',opc.pref) SEPARATOR ',') AS myChoice 
From 
table1 opa 
INNER JOIN table3 opc ON opc.pid = opa.pid 
INNER JOIN table2 opb ON opb.bid = opc.bid 
group by opc.pid 

DEMO HERE