2012-04-09 10 views
0

SQL文に問題があります。私は1つのカテゴリ(エンティティ)に属するエンティティギャラリーを持っています。次に、エンティティGalleryImagesがあり、特定のギャラリーの画像が保存されています。ギャラリーにはたくさんの画像があるかもしれませんが、ギャラリーは画像なしで存在することもできます(画像はまだ追加されていません)。1つ以上の画像を含むギャラリーを選択

ここでは、(DESC)1つ以上のイメージを持ち、いくつかのカテゴリに属する​​ギャラリーを選択するSQLクエリを作成します。

カテゴリー(ID、名前)

ギャラリー(ID、名前、CATEGORY_ID)

GalleryImages(ID、gallery_id、パス)

カテゴリ - >ギャラリー(多くの1つ) ギャラリー - > GalleryImages(多くの1つ)

答えて

0

はこれを試してみてください:

SELECT * 
FROM Gallery as G 
WHERE 
    G.category_id = 1 
    AND G.id in (SELECT gallery_id FROM GalleryImages) 

選択するcaregory_idに1を置き換えます。

+0

私はこれを試してみましたが、このクエリは関係なく、ギャラリーがイメージを持っているか、いない場合は、最新のギャラリーを選択していない:「NewsAdminBundleからのPを選択:ギャラリーP P .category_id =:カテゴリとp.id IN(SELECT i FROM NewsAdminBundle:GalleryImages i)ORDER BY p.created_at DESC ' – repincln

0

Hmm - 基本的な質問のように見えますが、既に回答済みです。しかし、あなたのセットアップは私に少しバグがあります...
私はあなたのテーブルを少し改造したいと思います(国際化は問題ではないと仮定します)。とりわけ、私は「カテゴリー」と「ギャラリー」という概念の根本的な違いがあるとは感じていません。現在、「スーパー」と「サブ」のカテゴリ/ギャラリーがあり、イメージは一度に複数のものに属している場合があります(つまり、レナジアンス、ミケランジェロ、彫刻など)。これはタグの概念に似ています。

私はおそらくのようなものに、あなたのテーブルを修正したい:

Gallery (or Category, if you prefer) 
============= 
id -- autoincrement 
name -- varchar(50) or something, unique 
parent -- fk reference to another Gallery.id row, optional 

Image 
========== 
id -- autoincrement 
name -- varchar(50) or similar, non-unique 
path -- store as URI/URL, unique 
description -- varchar(128) or similar 

Gallery_Image 
=============== 
galleryId -- fk reference to Gallery.id 
imageId -- fk reference to Image.id 
     -- the pair is unique 

Related_Gallery -- optional table 
================ 
galleryId -- fk reference to Gallery.id 
relationship -- code, or fk reference to other table 
relatedId -- fk reference to Gallery.id 
      -- entire row should be unique 
      -- somewhat tricky to use. 
+0

チップの返信をありがとう。私は、そのエンティティのニュースエンティティと記事がカテゴリーに属することにも言及していませんでした。ギャラリーもこのカテゴリ(科学、文化など)に属しています。だから私はカテゴリーを持っており、ギャラリーとしてのニュースはそのカテゴリーに属しています。 – repincln

+0

@repincln - そうですね、それらは異なるエンティティであるかもしれません(どのように概念化するかによって異なります)。ただし、ニュースエンティティは複数の異なるカテゴリに属する​​可能性があります。ギャラリーのためにここに示されている技術は、あなたのニュースカテゴリに適用可能でなければなりません。 –

関連する問題