我有两个包含以下定义的表:
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中没有父母的项目。
答案 0 :(得分:0)
我自己找到了它,基本上我想要的是这样的:
SELECT *
FROM A
WHERE A.ID not in (
SELECT B.childID
FROM B
);
这会从A中选择所有没有父母的项目(这意味着它们不是其他任何项目的孩子)。