mysql - 左连接和右连接是否足够?

标签 mysql sql

假设我有 2 个如下表:

表:产品

-------------
|PRODUCT    |
-------------
|IPAD       |
-------------
|IPHONE     |
-------------

表:销售额

-----------------------------   
SALES_PERSON|PRODUCT|IS_SOLD|
-----------------------------
ALICE       |IPAD   |   1   |
-----------------------------
JOHN        |IPONE  |   1   |
-----------------------------

是否可以让 SQL 语句产生如下结果?

--------------------------------
SALES_PERSON| PRODUCT | IS_SOLD|
--------------------------------
ALICE       | IPAD    | 1      |
--------------------------------
ALICE       | IPHONE  | null   |
--------------------------------
JOHN        | IPAD    | null   |
--------------------------------
JOHN        | IPHONE  | 1      |
--------------------------------

最佳答案

您可以使用联接来执行此操作,但您需要不止一个。您需要在产品和销售人员之间创建交叉产品。左侧将此连接到 sales_person 表:

select pe.sales_person, p.product, sp.is_sold
from product p cross join
     (select distinct sales_person from sales) pe left outer join
     sales_person sp
     on sp.product = p.product and
        sp.sales_person = pe.sales_person;

关于mysql - 左连接和右连接是否足够?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22394770/

相关文章:

mysql - 计数连接中的重复列名

mysql - SQL 货币四舍五入到最接近的 0.05 美分

mysql - 我希望在我的 in () 语句中包含重复项

php - 如何使用 SELECT SUM() FROM Table GROUP BY 进行删除

sql - 选择一列中具有重复值的行

sql - 查找某个表的数据源 - ORACLE

mysql - 查询在工作台中有效,但在 mysql 客户端中无效

php - 多个表的 WHERE 条件

mysql - 用于更新表中的行、插入/更新同一个表的 SQL 语句

sql - NATURAL(JOIN)在生产环境中是否被认为有害?