-3

我是新来的sql,并且被赋予了加入 3 张桌子的任务。有人可以对此有所了解sql

我有 3 个表,如表 1

userID | username | password
 1        user1      user1
 2        user2      user2

表 2

userID | order number | order quantity
2           101             100

表3

userID | name | address
1        John    xxx
2        Will    xxx
3        Peter   xxx

并且结果表需要显示为:

UserID | username | name | address | order number | order quantity        
1         user1     John    xxxxx      0               0
2         user2     Will    xxxxx      101           100
3         user3     Peter   xxxxx      0               0
4

2 回答 2

1

您应该在某些列上使用LEFT JOINwith ,COALESCE

SELECT  a.`userid`,
        a.`username`,
        c.`name`,
        c.`address`,
        COALESCE(b.`order number`, 0) `order Number`,
        COALESCE(b.`order quantity`, 0) `order quantity`
FROM    table1 a
        LEFT JOIN table2 b
            on a.userid = b.userid
        LEFT JOIN table3 c
            on a.userid = c.userid

基本上,LEFT JOIN所做的是从左表中检索所有行,无论它是否与第二个表匹配。COALESCE处理null应该是什么样的值。

于 2012-09-10T09:45:22.393 回答
0

这将有助于

select 
    a.userID, 
    c.name, 
    c.address, 
    b.order_number, 
    b.order_quantity 
from 
    table1 a 
        join table3 c 
            on a.userID=c.userID 
        join table2 b 
            on a.userID=c.userID

但是,您可能需要拿起一本 SQL 书籍,因为这是一件非常简单的事情。

于 2012-09-10T09:48:13.953 回答