2017-01-11 9 views
0

私は3つのテーブルUPDATES、MODELS、およびUPDATES_MODELSを持っています。Mysql - 重複結果の取得

UPDATESテーブルは、次のカラムがあります

  • をMODEL_ID:

    • UPDATE_ID、
    • モデルテーブルは、次の列を有する
    • サムネイル

    を掲載

  • first_name
  • last_name。

UPDATES_MODELSは連結テーブルであり、次の列があります

  • UPDATE_ID
  • MODEL_IDを。

一部のアップデートには2つ以上のモデルがあります。たとえば、更新に2つのモデルがある場合、クエリで2つのサムネイルが複製され、2つの重複するタイトルが返され、 2つの重複した日付と1つの更新に1つのモデル名があり、もう一方の更新にはもう一方のモデル名が付きます。

これは私が望むものではありません。

2つ以上のモデルによる更新では、サムネイル1個、タイトル1個、日付1個を返し、両方のモデル名を更新する必要があります。

SQLクエリでDISTINCTを使用してみましたが、何もしませんでした。私はDISTINCTキーワードの有無にかかわらず同じ結果を得ました。

ここにありますが、私のコードです:すべての

SELECT updates.update_id, title, posted, duration, updates.thumbnail, updates.alt_tag, updates.title_tag, updates.visible, models.model_id, first_name, last_name, updates_models.update_id, updates_models.model_id 
FROM updates 
INNER JOIN updates_models 
ON updates.update_id = updates_models.update_id 
INNER JOIN models 
ON models.model_id = updates_models.model_id 
+0

あなたが望むサンプルデータを与えます。 –

+0

SELECTを1行(サムネイル、タイトル、日付、およびモデル)、モデルのみを含む2行目を生成すると想定していますか?申し訳ありませんが、それは起こりません。フロントエンドのアプリまたはレポートで関連情報のみを抽出します。 –

+0

ありがとうございました。あなたは2つのSQLクエリを実行する必要があると言っていますか? – codeman

答えて

0

まず、私はあなたのテーブルモデルを疑います。 「複数のモデルは更新されていますが、同じモデルは複数のUpdateに所有できません」というケースがある場合、それは1対多のリレーションシップであり、モデルテーブルにupdate_idを保持するだけです。

あなたの質問はあまり明確ではなく、不完全です。あなたの質問にはあなたが質問で説明していない列があります。しかし、私はあなたが正しく限定された詳細であなたを得た場合、あなたのケースのために以下のクエリを試すことができます。

SELECT updates.update_id, posted, updates.thumbnail,array_agg(first_name), array_agg(last_name), updates_models.update_id, updates_models.model_id FROM "UPDATES" updates INNER JOIN "UPDATES_MODELS" updates_models ON updates.update_id = updates_models.update_id INNER JOIN "MODELS" models ON models.model_id = updates_models.model_id group by updates.update_id, posted, updates.thumbnail, updates_models.update_id, updates_models.model_id 
関連する問題