我有两张桌子包和物品。
行李表包含行李的元数据。项目表包括包中的物品和物品的数量。
我想知道我是否能找到任何有笔记本电脑和平板电脑的包。作为参考,我有<a href="{{ path('productsAction') ~ '/#' ~ product.slug }}">Apple</a>
这是项目名称,ItemType
是行李ID:
BagID
我尝试了这个但是因为那不是表如何工作这个查询不会工作。
非常感谢任何帮助。
答案 0 :(得分:1)
您可以尝试使用两个EXISTS
子句进行查询:
SELECT * FROM Bag b
WHERE
EXISTS (SELECT * FROM Item i
WHERE ItemType = 'Tablet' AND b.BagID = i.BagID)
AND EXISTS (SELECT * FROM Item i
WHERE ItemType = 'Laptop' AND b.BagID = i.BagID)
或者,您可以将Bag
加入Item
表两次:
SELECT *
FROM
Bag b INNER JOIN
item laptop ON laptop.ItemType = 'Laptop' AND laptop .BagID = b.BagID INNER JOIN
item tablet ON tablet.ItemType = 'Tablet' AND tablet .BagID = b.BagID;
第一个查询将在每个行李中返回一行,其中包含平板电脑和笔记本电脑,而如果您有多行笔记本电脑和/或平板电脑,则第二个查询可能会返回多行。
答案 1 :(得分:0)
我喜欢使用group by
和having
来处理这些类型的查询。在MS Access中,这看起来像:
SELECT Item.BagID
FROM Bag INNER JOIN
Item
ON Bag.BagID = Item.BagID
WHERE ItemType IN ('Tablet', 'Laptop')
GROUP BY Item.BagID
HAVING COUNT(Item.BagId) = 2;
注意:这假设同时包含两件物品。