| | |
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Autor | Správa |
---|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 10.04.2011 16:57 | |
|
Zdravim,
v jednom selecte pouzivam join a nerozumiem celkom chovaniu, nikdy predtym som s tym problem nemal.
v jednej tabulke mam nejake zaznamy a v druhej su k nim nejake dodatocne data. takez jeden zaznam z prvej tabulky moze mat X dodatocnych dat v druhej tabulke..
a chcem teraz vypisat vsetky zaznamy z prvej tabulky a dat tam pocet riadkov, ktore su mu priradene v druhej (este spocitat vsetky zaznamy a spocitat tie, ktore maju k.status = 1, ale to som zo selectu dal teraz prec, pretoze je to nepodstatne)
mam tabulky
Kód: p: id | title
1 | jedna 2 | dva 3 | tri 4 | styri 5 | pat
k: id | pid | status | text
1 | 1 | 1 | a 2 | 1 | 1 | b 3 | 2 | 1 | c 4 | 3 | 1 | d pouzijem select Kód: SELECT p.id,p.title,COUNT(k.id) AS count FROM p LEFT JOIN k ON k.pid = p.id GROUP BY k.pid ORDER BY p.id DESC ocakavam vystup Kód: id | title | count
1 | jedna | 2 2 | dva | 1 3 | tri | 1 4 | styri | 0 5 | pat | 0
lenze dostanem (vynecha posledny zaznam p.id = 5) Kód: id | title | count
1 | jedna | 2 2 | dva | 1 3 | tri | 1 4 | styri | 0
ked zaznamu p.id = 4 priradim aspon jeden riadok v tabulke k, tak potom sa vo vysledku nachadza aj p.id = 5 s count = 0..
ked zaznamu p.id = 3 odstranim data z tabulky k, tak sa uz ani p.id = 4 vo vysledku nenachadza
z toho vyplyva, ze ako keby ukoncilo select hned po prvom zazname, ktoreho count = 0
kde robim chybu? uniklo mi nieco?
dakujem
_________________ Sorry za prelkepy |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
v GROUP BY nedavaj k.pid, ale daj namiesto toho p.id
Naposledy upravil stenley dňa 13.04.2011 17:55, celkovo upravené 1
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 13.04.2011 17:55 | |
|
robis group by podla stlpca ktory nema pozadovanu hodnotu
daj group by p.id a bude to tak ako to ma byt
dalsie mozne spososby selectovania
Kód: SELECT p.id,p.title,(select COUNT(k.id) from k where k.pid = p.id) AS count FROM p ORDER BY p.id DESC
SELECT p.id,p.title, ifnull(k.count,0) FROM p left join (select pid,COUNT(k.id) as count from k group by pid ) k ON k.pid = p.id ORDER BY p.id DESC
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal autor témy emer: 13.04.2011 19:35 | |
|
ach jo
diky moc obom, pouzil som coldakov priklad, zda sa mi to rychlejsie pri tom mnozstve dat, co tam mam.
_________________ Sorry za prelkepy |
|
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|