I have two MySQL tables. This is first one [products] (PRIMARY = id):
[id] | title | description
and this is the second [sizes] (PRIMARY = id & size):
[id] | [size]
size
can only have values from [1,2,3,4,5,6]
.
I have a PHP array which has the size values. I reshape it to a comma-separated values string like this:
$size_list = implode(",", $sizes);
For those who are not familiar with PHP, the above code will generate an string like this: "1,4,5" and then query the database like this:
$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 .")";
But this query replicates the products for each size they have in the sizes table.
I want to:
Return records from products table which have at least one available size in sizes table, without duplicate
and of course
want those sizes in a variable to show to the client
For example:
Products:
1 | product1 | description1
2 | product2 | description2
3 | product3 | description3
4 | product4 | description4
Sizes:
1 | 1
1 | 2
1 | 4
1 | 5
2 | 1
2 | 5
Given $sizes_list="1,2"
, what I want as output is:
1 | product1 | description1 | 1,2,4,5
2 | product2 | description2 | 1,5
See Question&Answers more detail:
os