Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 4 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Nerozumiem chovaniu

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 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
Offline

Správca fóra
Správca fóra
Nerozumiem chovaniu

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 13.04.2011 17:54

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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 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


Offline

Užívateľ
Užívateľ
Nerozumiem chovaniu

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok Napísal autor témyOffline : 13.04.2011 19:35

ach jo :lol:

diky moc obom, pouzil som coldakov priklad, zda sa mi to rychlejsie pri tom mnozstve dat, co tam mam.







_________________
Sorry za prelkepy
Odpovedať na tému [ Príspevkov: 4 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. nerozumiem tomu fest diky za vasu ''ochotu''

v Redakčné systémy

0

432

22.10.2006 14:35

boarderpp Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chcem poskladat stranku a nerozumiem, ako funguje include

v PHP, ASP

17

1004

28.02.2011 20:33

walther Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra