0

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
4

1 に答える 1