簡體   English   中英

MySQL連接三個表

[英]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

替代文字http://christianruado.comuf.com/images/schema.png

您需要使用數據透視表

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM