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 * from products p
where exists (select * from products_photos pp where pp.product_id = p.id)
于 2012-07-05T17:39:38.037 に答える
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

内部結合の場合、結合が可能な行のみが返されます。つまり、テーブルに少なくとも 1 つの値があることを意味しますProducts_photos

于 2012-07-05T17:31:29.113 に答える
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 に答える