簡體   English   中英

需要幫助來從三個MySQL表中檢索數據

[英]Need help to retrieve data from three MySQL tables

我有三個表,分別是“用戶”,“用戶愛好”和“愛好”。 以下是帶有值的示例表;
以下是用戶表,其中包含fields id, name and age

╔════╦══════╦═════╗
║ ID ║ NAME ║ AGE ║
╠════╬══════╬═════╣
║  1 ║ abc  ║  23 ║
║  2 ║ xyz  ║  24 ║
║  3 ║ pqr  ║  21 ║
╚════╩══════╩═════╝

下面是user_hobbies表,其中包含字段id,user_id和hobby_id

╔════╦═════════╦══════════╗
║ ID ║ USER_ID ║ HOBBY_ID ║
╠════╬═════════╬══════════╣
║  1 ║       1 ║        1 ║
║  2 ║       1 ║        2 ║
║  3 ║       1 ║        3 ║
║  4 ║       2 ║        4 ║
║  5 ║       2 ║        3 ║
║  6 ║       2 ║        5 ║
║  7 ║       3 ║        2 ║
║  8 ║       4 ║        6 ║
╚════╩═════════╩══════════╝

以下是帶有字段ID和desc的興趣愛好

╔════╦═══════════╗
║ ID ║   DESC    ║
╠════╬═══════════╣
║  1 ║ music     ║
║  2 ║ chatting  ║
║  3 ║ cricket   ║
║  4 ║ badminton ║
║  5 ║ chess     ║
║  6 ║ cooking   ║
╚════╩═══════════╝

實際要求是我需要一個查詢來檢索姓名,年齡,hobby_id和desc(請參見下面的示例)

╔══════╦═════╦══════════╦═════════════════════════╗
║ NAME ║ AGE ║ HOBBYID  ║        DESC             ║
╠══════╬═════╬══════════╬═════════════════════════╣
║ abc  ║  23 ║ 1,2,3    ║ music,chatting,cricket  ║
║ pqr  ║  21 ║ 2        ║ chatting                ║
║ xyz  ║  24 ║ 4,3,5    ║ badminton,cricket,chess ║
╚══════╩═════╩══════════╩═════════════════════════╝

您需要首先連接表,並使用一個稱為GROUP_CONCAT()的聚合函數。

SELECT  a.Name,
        a.Age,
        GROUP_CONCAT(c.ID) hobbyIDs,
        GROUP_CONCAT(c.desc) descList
FROM    users a
        INNER JOIN user_hobbies b
            ON a.ID = b.user_ID
        INNER JOIN hobbies c
            ON b.hobby_ID = c.ID
GROUP   BY a.Name, a.Age

要進一步獲得有關聯接的知識,請訪問以下鏈接:

OUTPUT

╔══════╦═════╦══════════╦═════════════════════════╗
║ NAME ║ AGE ║ HOBBYIDS ║        DESCLIST         ║
╠══════╬═════╬══════════╬═════════════════════════╣
║ abc  ║  23 ║ 1,2,3    ║ music,chatting,cricket  ║
║ pqr  ║  21 ║ 2        ║ chatting                ║
║ xyz  ║  24 ║ 4,3,5    ║ badminton,cricket,chess ║
╚══════╩═════╩══════════╩═════════════════════════╝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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