Portál AbcLinuxu, 23. dubna 2024 11:02


Dotaz: Dva součty v podselectu

14.11.2012 12:01 Piškot | skóre: 7 | blog: Uživatel | Přerov nad labem
Dva součty v podselectu
Přečteno: 385×
Odpovědět | Admin
Ahoj, mám problém co řeším a nemůžu vymyslet správný dotaz pro google.

Mám strukturu příjemka, položky (jednotlivé krabice), zboží (info pro krabice)

prijemky (id, ...)

polozky (id,zb_id,list_in ...) zbozi (id,kod ...)

vazby polozky.list_in = prijemky.id a polozky.zb_id = zbozi.id

potřebuju vybrat toto

u příjemky počet všech položek a počet zboží
SELECT prijemky.* ,
(SELECT count(*) FROM zbozi_polozky WHERE zbozi_polozky.list_in =  prijemky.id GROUP BY list_in) as polozky,
(SELECT count(*) FROM zbozi WHERE zbozi.id IN (SELECT zbozi_polozky.zb_id FROM zbozi_polozky WHERE list_in = prijemky.id)) AS zbozi			
FROM prijemky  
ORDER BY datum_prijeti DESC,id DESC
Takhle je to moc pomalé dělají se věci dvakrát , není něco jako tohle (nefunkční)
SELECT prijemky.* ,
(SELECT Concat(count(*),'|',count(UNIQUE zb_id)) FROM zbozi WHERE zbozi.id IN (SELECT zbozi_polozky.zb_id FROM zbozi_polozky WHERE list_in = prijemky.id)) AS zbozi			
FROM prijemky  
ORDER BY datum_prijeti DESC,id DESC

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Piškot (tazatel))
14.11.2012 12:26 kuka
Rozbalit Rozbalit vše Re: Dva součty v podselectu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Staci ti udelat dotaz pres vazebni tabulku
select list_in, count(distinct id), count(distinct zb_id)
from zbozi_polozky
group by list_in
a ten si pak sjoinuj prijemkami
14.11.2012 12:33 Piškot | skóre: 7 | blog: Uživatel | Přerov nad labem
Rozbalit Rozbalit vše Re: Dva součty v podselectu
oh díky to mě nenapadlo,je to rychlejší a překvapivě prosté.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.