【问题标题】:Select a value from Table 2 that depends on another value from Table 1 (Oracle SQL)从表 2 中选择一个值,该值依赖于表 1 中的另一个值 (Oracle SQL)
【发布时间】:2020-05-14 18:12:28
【问题描述】:

我正在尝试在锁定期间做一些数据库,希望能得到一些帮助,因为我已经做了 5 个小时没有运气。从一本书中得到了一个 PDF,遗憾的是,解决方案部分不可读。

这里有两张表:

**Table 1 named Laptop**
Laptop ID(PK)   Name    
1               Lenovo
2               Asus
3               Mac


**Table 2 named Buyers**
Buyer ID(PK)     Buyer Name    Laptop ID(FK)    Country
A                Jet Li        1             China
B                Hermione      1             UK
C                Mercato       2             Spain

我创建的活动请求 “选择所有包名及其买家名称的 SQL 语句(因此只有 2 列),并显示空值”,因为 Mac 没有买家。

我一直在尝试 JOIN 和 UNION,但没有锁。

SELECT Name from Laptop
UNION
SELECT Buyer name from Buyers;

非常感谢

【问题讨论】:

    标签: sql oracle join


    【解决方案1】:

    你需要一个OUTER JOIN

    SELECT
        l.name,
        b.buyer_name
    FROM
        laptop  l
        LEFT OUTER JOIN buyers  b 
        ON l.laptop_id = b.bag_id;
    

    演示:

    with laptop as(
      select 1 laptop_id, 'Lenevo' name from dual union all
      select 2 laptop_id, 'Asus' name from dual union all
      select 3 laptop_id, 'Mac' name from dual
    ),
    buyers as(
      select 'Jet Li' buyer_name, 1 bag_id from dual union all
      select 'Hermione' buyer_name, 1 bag_id from dual union all
      select 'Mercato' buyer_name, 2 bag_id from dual
    )
    SELECT
        l.name,
        b.buyer_name
    FROM
        laptop  l
        LEFT OUTER JOIN buyers  b 
        ON l.laptop_id = b.bag_id;
    
    NAME       BUYER_NAME          
    ---------- --------------------
    Lenevo     Jet Li              
    Lenevo     Hermione            
    Asus       Mercato             
    Mac        NULL
    

    【讨论】:

      猜你喜欢
      • 2019-08-27
      • 2012-03-04
      • 1970-01-01
      • 2015-04-13
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      相关资源
      最近更新 更多