来自多个表的SQL SELECT

tjc*_*bos 54 sql select join left-join outer-join

如何从customers1和customers2获取所有产品包括他们的客户名称?

customer1 table
cid name1
1   john
2   joe

customer2 table
cid name2
p1  sandy
p2  linda

product table
pid cid pname
1   1   phone
2   2   pencil
3   p1  pen
4   p2  paper
Run Code Online (Sandbox Code Playgroud)

结果应该是这样的

pid  cid  pname  name1 name2
1    1    phone  john  NULL
2    2    pencil joe   NULL
3    p1   pen    NULL  sandy
4    p2   paper  NULL  linda
Run Code Online (Sandbox Code Playgroud)

Row*_*haw 78

SELECT p.pid, p.cid, p.pname, c1.name1, c2.name2
FROM product p
LEFT JOIN customer1 c1 ON p.cid = c1.cid
LEFT JOIN customer2 c2 ON p.cid = c2.cid
Run Code Online (Sandbox Code Playgroud)

  • 声明 p 是第二行的产品表。“来自产品 p” (2认同)

Don*_*e C 15

SELECT pid, cid, pname, name1, name2 
FROM customer1 c1, product p 
WHERE p.cid=c1.cid 
UNION SELECT pid, cid, pname, name1, name2 
FROM customer2 c2, product p 
WHERE p.cid=c2.cid;
Run Code Online (Sandbox Code Playgroud)


cha*_*aos 5

SELECT `product`.*, `customer1`.`name1`, `customer2`.`name2`
FROM `product`
LEFT JOIN `customer1` ON `product`.`cid` = `customer1`.`cid`
LEFT JOIN `customer2` ON `product`.`cid` = `customer2`.`cid`
Run Code Online (Sandbox Code Playgroud)


Phi*_*ert 5

select p.pid, p.cid, c1.name,c2.name
from product p
left outer join customer1 c1 on c1.cid=p.cid
left outer join customer2 c2 on c2.cid=p.cid
Run Code Online (Sandbox Code Playgroud)