table1 schema: name=q_values; columns= id, name;
table2 schema: name=signup_protect; columns= first_name, last_name, uid;
table3 schema: name=user_result; columns= uid, value_ids;
table1 data: [1, forest], [2, mountains]
table2 data: [test, test, 123]
table 3 data: [123, {1:2}]
我需要這給了我這個結果查詢:
test, test, {forest, mountains}
這意味着我的UID加入註冊與結果,並我將value_ids
替換爲q_value
的名稱。
這是我到目前爲止所做的,但我只獲得了昏迷值的名字。
SELECT `signup_protect`.`first_name`, `signup_protect`.`last_name`,
(select name from q_values where id in (replace(`user_results`.`value_ids`,':', ',')))
FROM (`signup_protect`) JOIN `user_results` ON `user_results`.`uid` = `signup_protect`.`uid`
我用
,以取代我的字符串逗號冒號,所以我可以把它們作爲數組。
參見[是數據庫列存儲分隔列表真那麼壞?](http://stackoverflow.com/a/3653574) – eggyal
表3中的數據字面上存儲爲「」{1:2}「'(5個字符)? –
問題是'IN'需要一個逗號分隔的列表,但是你給它一個字符串。看看我的這個問題:http://stackoverflow.com/q/4155873/206403,請考慮*不*在數據庫中存儲(逗號)分隔的列表,你應該有一行的每個值(做它,稍後你會感謝我)。 –