2 つの MySQL テーブルがあります。これは最初の [products] (PRIMARY = id) です:
[id] | title | description
これは 2 番目の [サイズ] (プライマリ = id & サイズ) です。
[id] | [size]
size
は からの値のみを持つことができます[1,2,3,4,5,6]
。
サイズ値を持つPHP配列があります。次のように、コンマ区切りの値の文字列に変形します。
$size_list = implode(",", $sizes);
PHP に慣れていない方のために説明すると、上記のコードは "1,4,5" のような文字列を生成し、データベースに対して次のようにクエリを実行します。
$query = "SELECT t1.id,t1.title,t1.description,t2.size FROM products t1 INNER JOIN sizes t2 ON t1.id=t2.id WHERE size IN(".$size_list .")";
ただし、このクエリは、サイズ テーブルにある各サイズの製品を複製します。したい:
重複することなく、サイズ テーブルに使用可能なサイズが少なくとも 1 つある製品テーブルからレコードを返します
そしてもちろん
変数内のこれらのサイズをクライアントに表示したい
例えば:
製品:
1 | product1 | description1
2 | product2 | description2
3 | product3 | description3
4 | product4 | description4
サイズ:
1 | 1
1 | 2
1 | 4
1 | 5
2 | 1
2 | 5
を考えると$sizes_list="1,2"
、出力として欲しいものは次のとおりです。
1 | product1 | description1 | 1,2,4,5
2 | product2 | description2 | 1,5