0

我的数据库中有 2 个表:

Products:
--------------------------------------------------
|   id    |   product_name    |   manufacturer   |
--------------------------------------------------

Products_photos:
-----------------------------------------------
|   id    |   product_id    |   image_name    |
-----------------------------------------------

我想选择所有产品,其中 Product_photos 计数大于 0。我该怎么做?

@Edit:我不想为我的输出添加 Products_photos 的结果。我只想显示产品中的条目,其中有任何图像。对不起我的英语不好 :)

感谢帮助

4

4 回答 4

0
SELECT P.* FROM Products AS P INNER JOIN Products_Photos AS PP ON P.id=PP.id

另一种方法,效率更低,但可能更便于您理解,将是

SELECT P.* FROM Products AS P
WHERE P.id IN (SELECT DISTINCT id FROM Product_photos)
于 2012-07-05T14:52:13.147 回答
0
SELECT p.id, p.product_name, p.manufacturer
FROM Products p
     INNER JOIN Products_photos i on i.product_id = p.id
于 2012-07-05T14:53:34.817 回答
0

你可以做

Select P.id, P.product_name, P.manufacturer
from Products P 
INNER JOIN Products_photos Pp on P.Id = Pp.product_id

对于内连接,它只会返回可以连接的行,这意味着您在Products_photos 表中至少有一个值。

于 2012-07-05T17:31:29.113 回答
0

我认为就查询效率而言,已经提供的加入解决方案是最好的选择。但为了清楚起见——就准确表达你的要求而言——我会选择这样的方法:

select * from products p
where exists (select * from products_photos pp where pp.product_id = p.id)
于 2012-07-05T17:39:38.037 回答