[英]MySQL Joining three tables
我正在用三個表進行查詢,問題是一個表多次出現另一個表的ID。
樣本數據:
users: id
answers:
id:1
user_answer :1
id:1
user_answer :2
id:1
user_answer :3
Questions:
id:1
answers :answer description
id:2
answers :answer description
id:3
answers :answer description
我如何獲得所有用戶信息以及所有答案及其描述,我使用了group by user.id,但僅返回一個答案。
我想返回類似於此列表的所有用戶答案:
Name Q1 Q2
USERNAME ans1,ans2 ans1,ans2 comma separated description of answer here
您需要使用數據透視表
SELECT users.id, users.name,
GROUP_CONCAT(q1.answer SEPARATOR ', ') AS `Q1`,
GROUP_CONCAT(q2.answer SEPARATOR ', ') AS `Q2`,
GROUP_CONCAT(q3.answer SEPARATOR ', ') AS `Q3`
FROM `users` AS users,
LEFT JOIN `answers` AS a1 ON a1.id = users.id
LEFT JOIN `questions` AS q1 ON q2.id = a1.user_answer
LEFT JOIN `answers` AS a2 ON a2.id = users.id
LEFT JOIN `questions` AS q2 ON q2.id = a2.user_answer
LEFT JOIN `answers` AS a3 ON a3.id = users.id
LEFT JOIN `questions` AS q3 ON q3.id = a3.user_answer
WHERE q1.question_id = 1
AND q2.question_id = 2
AND q3.question_id = 3
GROUP BY users.id
這是對您要從提供的架構中執行的操作的最佳猜測(我懷疑它是否完整,這就是為什么我在question_id部分中進行了猜測。我使用了LEFT JOIN以便如果用戶沒有該問題的答案,同樣,如果存在多個答案,GROUP_CONCAT將自動合並該字段。因此,如果從Q1到該特定用戶有2行,它將把這兩個合並為“ ans1,ans2” ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.