0

少し背景。アップロードする画像の量が不明な競売プロジェクト (PHP/MySQL) を構築しています。アップロードする画像の量は、利用可能な写真の量に応じてユーザーが定義する必要があります。それらをオンラインでアップロードすることは問題ありません。表にすべての重要な情報が表示されます。

関連するテーブルが 2 つあります。

  1. プロパティ (列のミッシュ/マッシュ)
  2. 画像 (3 つの列: images_id、images_url、images_entry_id)

images_entry_id は、固有の properties.property_id を参照します。問題は、複数の画像をアップロードするときにあります。一意の ID url があり、同じ images_entry_id を持っているので、それらを Properties テーブルで参照できます。そのため、内部結合を試みると、画像の量に応じて、プロパティ テーブルから同じ出力がいくつか得られます。これが私の言いたいことを説明してくれることを願っていますか?

私のクエリ:

$sql = "SELECT * FROM properties INNER JOIN images
                ON properties.prop_id=images.images_entry_id ORDER BY properties.prop_id DESC";

基本的に、1 つの prop_id に対して 3 つの画像がある場合、プロパティ テーブルから同じ出力の 3 つの出力を取得します。そこには!何か案は?データベースのレイアウトが悪いのでしょうか、それとも単純なクエリに直面しただけなのでしょうか?

4

2 に答える 2

0

わかりました、これはうまくいきます:

$sql = "SELECT DISTINCT properties.* FROM properties 
INNER JOIN images ON (properties.prop_id=images.images_entry_id) 
ORDER BY properties.prop_id DESC";

またはこれ

$sql = "SELECT properties.* FROM properties 
WHERE EXISTS (SELECT * FROM images WHERE properties.prop_id=images.images_entry_id) 
ORDER BY properties.prop_id DESC";
于 2012-08-14T19:00:51.480 に答える
0

期待される結果は、結合されたテーブルの単一のクエリからは得られないため、各テーブルを個別にクエリする必要があります。

于 2012-08-14T19:02:11.170 に答える