mysql - SQL query to select distinct rows from left table after inner join to the right table -
i have 2 mysql tables. first 1 [products] (primary = id):
[id] | title | description and second [sizes] (primary = id & size):
[id] | [size] size can have values [1,2,3,4,5,6].
i have php array has size values. reshape comma-separated values string this:
$size_list = implode(",", $sizes); for not familiar php, above code generate string this: "1,4,5" , query database this:
$query = "select t1.id,t1.title,t1.description,t2.size products t1 inner join sizes t2 on t1.id=t2.id size in(".$size_list .")"; but query replicates products each size have in sizes table. want to:
return records products table have @ least 1 available size in sizes table, without duplicate
and of course
want sizes in variable show 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", want output is:
1 | product1 | description1 | 1,2,4,5 2 | product2 | description2 | 1,5
your query should like:
$query = " select t1.id, t1.title, t1.description, group_concat(t2.size separator ",") sizes products t1 inner join sizes t2 on t1.id=t2.id t1.id in (select t3.id sizes t3 t3.size in (".$size_list .") group t1.id, t1.title, t1.description " a bit of explanation. when join 2 tables, rows table sizes id table products, id = 1 joined 4 records , id = 2 joined 2 records. have aggregate numbers 1 record.
Comments
Post a Comment