在Mysql上加入多个表

时间:2013-02-20 14:26:26

标签: mysql sql select join

我贬低了表格:

服务

╔════╦═════════════╗
║ ID ║ DESCRIPTION ║
╠════╬═════════════╣
║  1 ║ A           ║
║  2 ║ B           ║
║  3 ║ C           ║
╚════╩═════════════╝

员工

╔════╦══════╗
║ ID ║ NAME ║
╠════╬══════╣
║  1 ║ ABC  ║
║  2 ║ DEF  ║
║  3 ║ GHI  ║
╚════╩══════╝

StaffServices

╔══════════╦═════════════╦═════╗
║ STAFF_ID ║ SERVICES_ID ║ QTY ║
╠══════════╬═════════════╬═════╣
║        1 ║           1 ║   2 ║
║        1 ║           3 ║   3 ║
║        2 ║           3 ║   1 ║
║        3 ║           2 ║   4 ║
╚══════════╩═════════════╩═════╝

如何查询所有这些表以获得结果?

结果:

╔══════╦═════════════╦════════╗
║ NAME ║ DESCRIPTION ║  QTY   ║
╠══════╬═════════════╬════════╣
║ ABC  ║ A           ║ 2      ║
║ ABC  ║ B           ║ (null) ║
║ ABC  ║ C           ║ 3      ║
║ DEF  ║ A           ║ (null) ║
║ DEF  ║ B           ║ (null) ║
║ DEF  ║ C           ║ 1      ║
║ GHI  ║ A           ║ (null) ║
║ GHI  ║ B           ║ 4      ║
║ GHI  ║ C           ║ (null) ║
╚══════╩═════════════╩════════╝

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

SELECT  a.Name, b.Description, c.Qty
FROM    Staff a
        CROSS JOIN Services b
        LEFT JOIN StaffServices c
            ON a.ID = c.Staff_ID AND
                b.ID = c.Services_ID
ORDER   BY a.Name, b.Description