Pobranie wszsytkich wierszy jednym zapytaniem.

0

Mam tabele tj Company, Group oraz Product. Produkt, moze miec grupe albo jej nie miec. Jako moge jednym SQL zapytaniem pobranc wszystkie produkty, ktore maja grupe oraz grupy, ktore nie maja produktow?

Company
id
title
Group
id
company_id
title
Product
id
company_id
group_id
title
3

Jako moge jednym SQL zapytaniem pobranc wszystkie produkty, ktore maja grupe oraz grupy, ktore nie maja produktow?

To chyba XY ale no mozesz zrobic right joina i wtedy tam gdzie brakuje produktow to w wyniku beda nulle

0

Zapytanie moge napisac za pomoca UNION ALL. Tylko nie lubie zbyt tej opcji bo jest dosc nie wydajna. I zastanawialem sie nad alternatywami co do UNION.

3
select * 
from 
	groups g 
	left join 
	(
	select 
		p.company_id, 
		p.group_id, 
		g.title group_title, 
		p.id product_id, 
		p.title product_title 
	from 
		groups g 
		join 
		products p 
		on 
			p.company_id=g.company_id 
			and p.group_id=g.id
	) x 
	on 
		g.company_id=x.company_id 
		and g.id=x.group_id
0

@Marcin.Miga: To chyba nie do konca rozwiazanie dla mnie. Mozliwe, ze troche slabo opisalem problem. Generalnie samo zapytanie jest uzywane w perspektywnie. I moga zajsc 4 przypadki:

Groupa title Produkt title
Group 1 Produkt 1
null Produkt 2
Group 2 null
null null

1 użytkowników online, w tym zalogowanych: 0, gości: 1