製品テーブルがあり、product_id があります。また、グループのようなテーブルがあります。まあ言ってみれば:
Product table(product):
ID NAME
1 - Shoes
2 - T-shirt
3 - apple
4 - any thing
5 - lorem ipsum
_______________________________________________
Group product table(g_product):
ID - GROUP ID - PRODUCT ID
1 1 1
2 1 2
3 1 5
各グループから 1 つの製品だけを取得するクエリが必要です。私はこれを試しました:
select * from product as p
left join g_product as g on p.id = g.fk_prod
group by group_id
しかし、これはグループ化された製品だけをもたらします。
私はこの結果を望んでいません:
1 - Shoes
3 - apple
4 - any thing
これはグループ 1 の製品 1 であり、3 と 4 はグループ化されていません。
このクエリで動作すると思います:
select * from product as p
left join g_product as g on p.id = g.fk_prod
group by g.group_id
union
select * from product as p
left join g_product as g on p.id != g.fk_prod
group by p.id
しかし、これを実行するには 30 秒かかります。私はこれを速くする方法があることを知っています。しかし、私は理解できません