0

次のスキーマがあります。

Photo [id, name]

Gallery [id, name]

PhotoGallery [photo_id, gallery_id]

各写真は多くのギャラリーに属することができます。一部のギャラリーに属していないすべての個別の写真 (ID でグループ化) を表示できるようにする SQL (MySQL) クエリを作成する必要があります。たとえば、次のデータがあります。

Photo
------
1 bunny
2 rabbit
3 eagle

Gallery
-----
1 bunnies
2 rabbits
3 birds

PhotoGallery
-----
1 1
1 2
2 2
3 3

ギャラリー「バニー」に属さないすべての写真を選択したいです。

結果は次のようになります。

2 うさぎ

助言がありますか?データベースには約 10,000,000 枚の写真があるため、クエリも高速である必要があります。ギャラリーには 300,000 枚の写真を含めることができます。

4

2 に答える 2

2
SELECT *
FROM photos
WHERE photoID NOT IN (select photoid from photogalleries where galleryid=1)
于 2012-08-17T11:47:32.193 に答える
0
SELECT 
      p.*
FROM 
      photos p LEFT OUTER JOIN PhotoGallery pg on p.id = pg.photoid
WHERE 
      pg.photoid IS NULL AND pg.galleryid = 1
于 2012-08-17T11:50:39.427 に答える