次のようなdbテーブルがあります。
product_tag_id | tag_id | product_id
1 1 1
2 1 2
3 3 1
foreach ループでクエリを実行している php があります。
$product_tags = [1,3];
foreach(product_tags as $tag) {
$q = $this->db->query("SELECT product.*, product_tags.* FROM product
INNER JOIN product_tags ON product_tags.product_id = product.product_id
WHERE product_tags.tag_id =" . $tag);
}
$tag 値として 1 を使用する最初のクエリは product_id 1 と 2 をプルし、$tag として 3 を使用する 2 番目のクエリは product_id 1 を再びプルします。
以前に product_id が返されていない場合にのみ、クエリが行を返すようにします。product_id が一意の場合にのみ結果を表示したい。これを行う方法はありますか?
私は DISTINCT がこれを達成すると思っていましたが、うまくいかないようです。