Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Martin Kobelka:4.9.2017 13:40

Zajímalo by mě, zda lze následující dotaz nad dvěma tabulkami zvládnout bez poddotazu.

Mám dvě tabulky Article a Article_category, které jsou ve vztahu 1:N.

select title, (SELECT COUNT(*) from Article_category where Article_category.category = Categories.id) as suma from Categories
 
Odpovědět
4.9.2017 13:40
Avatar
Odpovídá na Martin Kobelka
Honza Prosecký:4.9.2017 13:46

Co join a group by?

 
Nahoru Odpovědět
4.9.2017 13:46
Avatar
Odpovídá na Honza Prosecký
Martin Kobelka:4.9.2017 13:53

Tato možnost mě hned napadla. Jak ale vyřeším nulové počty, které chci mít ve výsledku obsaženy?

Editováno 4.9.2017 13:54
 
Nahoru Odpovědět
4.9.2017 13:53
Avatar
Odpovídá na Martin Kobelka
Honza Prosecký:4.9.2017 14:16

Co tohle? S těma nullovýma hodnotama ti moc nerozumim. Pokud chceš zahrnout všechny články, nahradíš inner za left

SELECT
a.title, count(b.*) as suma
from Categories as a
inner join Article_category as b
on
a.id = b.category
group by a.title

Editováno 4.9.2017 14:17
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
4.9.2017 14:16
Avatar
Odpovídá na Honza Prosecký
Martin Kobelka:4.9.2017 14:38

V některých kategoriích není žádný článek. Chci aby byly také ve výsledku a ve spoupci suma měli hodnotu 0

To lze ovšem vyřešit takto.

SELECT
a.title, count(b.id) as suma
from Categories as a
left join Article_category as b
on
a.id = b.category
group by a.title

Děkuji za pomoc, dnes mi to nějak nemyslí :)

Editováno 4.9.2017 14:40
 
Nahoru Odpovědět
4.9.2017 14:38
Avatar
Odpovídá na Martin Kobelka
Honza Prosecký:4.9.2017 15:18

Presne, protoze jinak by mely ty clanky 1 kategorii i kdyz by nemely zadnou :)

Editováno 4.9.2017 15:19
 
Nahoru Odpovědět
4.9.2017 15:18
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.