SQL Select根据来自另一个表的条件进行选择

时间:2020-09-23 08:55:07

标签: sql

我有两个包含以下定义的表:

A
ID | Name    | Description
1  | Bag     | It's a bag
2  | Leather | Leather makes the bag
3  | Website | It's a website
4  | Images  | Just normal images
5  | Text    | Some descriptive text

B
parentID | childID | Quantity
1        | 2       | 5
3        | 4       | 2
3        | 5       | 1

我试图在表A中查找所有级别为0(意味着它们没有父项)的项目,然后使用它来尝试查找以下级别中的项目。

到目前为止,我已经明白了这一点,我认为这可以奏效,但显然不行...

SELECT *
FROM A
WHERE A.ID in (
  SELECT B.parentID
  FROM B
  WHERE (B.childID is NULL)
);

如果有人可以对此有所了解,我将非常感激。另外,如果有一些关于SQL查询的必读内容,请告诉我,我很高兴学习更多有关此的内容,这是我在努力解决的问题。

谢谢。

编辑: 我已经编辑了数据,希望可以更好地说明我要实现的目标。有几项,有些是父母,有些是孩子。

从表B​​中可以看出,要制造1个袋子,您需要5个皮革(袋子是数量为5的皮革的父代)。或者该网站由2个图像和1个文本组成(该网站同时是图像数量2和文本数量1的父站点)。 我只想查询购物袋和网站,即表A中表B中没有父母的项目。

1 个答案:

答案 0 :(得分:0)

我自己找到了它,基本上我想要的是这样的:

SELECT *
FROM A
WHERE A.ID not in (
SELECT B.childID
FROM B
);

这会从A中选择所有没有父母的项目(这意味着它们不是其他任何项目的孩子)。

相关问题