从表 2 中选择一个值,该值依赖于表 1 中的另一个值 (Oracle SQL)

Posted

技术标签:

【中文标题】从表 2 中选择一个值,该值依赖于表 1 中的另一个值 (Oracle SQL)【英文标题】:Select a value from Table 2 that depends on another value from Table 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;

非常感谢

【问题讨论】:

【参考方案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

【讨论】:

以上是关于从表 2 中选择一个值,该值依赖于表 1 中的另一个值 (Oracle SQL)的主要内容,如果未能解决你的问题,请参考以下文章

如何将listView的selectedItem值传递到wpf MVVM中的另一页

如果存在则从表中选择,否则从oracle中的另一个表中选择

如何使用 AlamoFireObjectMapper 动态映射 JSON 中的值,该值取决于同一 JSON 中的另一个值?

如何根据MySQL中的另一列有条件地选择列

SQL:如何从表A中一一检查是不是存在于表B上?

从表值函数返回表并在临时表中设置该值