SQL をよく知っている人にとっては簡単な質問のように思えますが、私にとってはそうではありません。
とにかく、ここにサンプルテーブルがあります:
主な (そして唯一の) キーはidにあります。したがって、基本的にシナリオは休閑地です。ユーザーは画像を追加できます。新しく追加された画像は、重複を避けるためにcomune_number値0で挿入されます (ファイル名 = PHP 経由の画像)。挿入された画像は、別のテーブルからカテゴリに割り当てることができます。同じ画像を多くのカテゴリに割り当てることができます。それぞれに、カテゴリ ID (comune_number) を持つ新しい行が挿入されます。2 つのテーブル間の関係はcomune_numberにあります。
すでに割り当てられているチェックボックスをオンにして、画像を表示したいと思います。
私の質問は簡単です。すべての画像を一度に含める方法、ただし同じ画像が既に割り当てられている場合は、0 の代わりにその comune_number を含めます。順序は気にしません。私が達成したい結果は次のようなものです:
私はGROUP BYを知っているので、試してみると
mysql_query("SELECT * FROM banner WHERE `comune_number` = 0");
また
mysql_query("SELECT * FROM banner GROUP BY `image`");
私は同じ(望ましくない)結果になります。
ほとんどの場合、2 つのクエリを 1 つに結合する必要がありますが、どれをどのように組み合わせるかわかりません。
注1:私の(ほとんど)知識とGoogleで見つけたもの(Stackoverflowを含む)に基づいて、phpMyAdminで多くの組み合わせを試しましたが、どれも示されているような結果にはなりませんでした。
注 2 : MySQL バージョン 5.1
MYSQL のみ、または PHP ソリューションとの組み合わせは大歓迎です。
編集
comune_number を保持する必要があります。そのため、画像を表示するときは、ID を知る必要があります。
私のクエリは comune_number に依存する必要があるため、comune_number = 10 が必要な場合、結果は上の 2 番目の画像のようになります。
EDIT2
どうやら私は自分自身を明らかにしていないようです。だから私が欲しいのは、ユーザーがID 10のカテゴリを見ているときに、すべての画像を一度見せて、そのカテゴリに割り当てられたものをマークすることです。
別の例はこちらです。したがって、ユーザーが id=9 のカテゴリ (comune_number) を見ている場合、すべての写真を 1 回表示し、それに割り当てられた 2 つをマークします。