2012-02-08 3 views
-1

私は2つのテーブルを照会しています。テーブルpageは情報を保持し、page_imagesは画像を保持します。 page_imagesには、すべての画像メタデータとページurl_titleが格納されているので、テーブルpageに関連付けることができます。私が情報と画像を照会するとき、私はpage_imagesのために重複した結果を得る。 pagepage_imagesの両方を照会しているときに、page_imagesに対して1を制限するにはどうすればよいですか?重複を返す2つのテーブルのクエリ。どちらか一方を制限する必要があります。

これは短縮クエリです:あなただけがINNER JOINが欠けているように見えます1つの結果使用LIMIT 1

+0

UPDATED、私は20に制限されていることがわかります。各ページには通常4枚の画像があるので、重複しています。各画像はテーブル 'page_images'のそれ自身の行に格納されます。私は 'page_images'から1つのイメージしか欲しませんが、まだ全体の20ページを取得します。したがって、最終的に20の 'page '結果と、20のすべての結果に対して1つの' page_images'結果が関連付けられます。申し訳ありません、私はこの奇妙なことを説明しています。 – Graham

+1

1ページあたり4枚の画像が返される基準は何ですか? – Phil

答えて

-1

。 試してみてください。

SELECT page.url_title, 
page.short_title, 
page_images.image_loc -- This returns duplicate results 
FROM page inner join page_images 
    on page.id = page_images.page_id 
WHERE page.language = '$lang' AND 
page.category = '$category' 

page.idは、ページテーブルの主キーである、とpage.page_idはpage_imagesテーブルの外部キーです。

-1

を引きたい場合

SELECT page.url_title, 
page.short_title, 
page_images.image_loc -- This returns duplicate results 
FROM page, page_images 
WHERE page.language = '$lang' AND 
page.category = '$category' AND 
page.url_title != '$page' AND 
page.url_title = page_images.page_title 
LIMIT 20 
+0

そして、なぜこの答えが下票を受け取ったのですか?元の質問が修正されました。 OPは重複を実際には受け取っていませんが、page_imagesテーブルからの有効なレコード... OPはおそらくこれをクエリによってグループに変更し、image_locフィールドでMAXを使用します – gangreen

関連する問題