Autor | Zpráva | ||
---|---|---|---|
ErnieCZ Profil |
Zdravím, omlouvám se předem za divny nazev prispěvku, ale docela sedí na to co potřebuji. Potřeboval by sql dotaz, pro kontrolu určitých údajů.
Pro příklad: Představte si, že kontrolujete stav výrobků na skladě podle předem daného seznam. SELECT NAZEV_VYROBKU,POCET_SKLAD FROM SKLAD WHERE NAZEV_VYROBKU IN (....) samozrejme tohle snad ten nejjednodussi select. Ale představte si situaci, kdy nektere vyrobky, ktere hledam na sklade nejsou a nikdy nebyli. Je mozne je prece jen vypsat? Vysledek by byl napriklad: NAZEV_VYROBKU POCET_SKLAD Zidle_Artuh 50 - tato polozka ve skladu je nebo byla, takze v poradku Stul_Choppin 0 - tato polozka v databazi nikdy nebyla, ale presto se zobrazi, akorat u ni bude 0, protoze ani jeden kus nikdy na sklade nebyl.. Je to aspon trochu srozumitelne? Proste bych potreboval aby mi vyjel cely seznam vyrobku, ktere zadam, ať už o nich v databazi zaznam je nebo ne. Je to možné? |
||
Taps Profil |
#2 · Zasláno: 12. 3. 2010, 07:46:47
ErnieCZ:
zkus použít count SELECT NAZEV_VYROBKU,count(POCET_SKLAD) as pocet FROM SKLAD WHERE NAZEV_VYROBKU IN (....) group by nazev_vyrobku |
||
Kajman_ Profil * |
#3 · Zasláno: 12. 3. 2010, 08:33:58
select t.nazev, ifnull(s.pocet_sklad, 0) from (select 'jabko' as nazev union select 'hruska' as nazev ) t left join sklad s on t.nazev = s.nazev_vyborku Pokud by seznam všech výrobků byl v nějaké tabulce, tak by se nemusela dělat přes ten union. |
||
Časová prodleva: 4 dny
|
|||
ErnieCZ Profil |
#4 · Zasláno: 15. 3. 2010, 21:20:49
diky...zkusim to...
|
||
Časová prodleva: 7 dní
|
|||
ErnieCZ Profil |
#5 · Zasláno: 22. 3. 2010, 13:44:07
Díky moc...ale mam takovy problem... prikaz ifnull nefunguje v databazi, ve ktere pracuji...a nemam moznost pridavat nebo upravovat...
|
||
Kajman_ Profil * |
#6 · Zasláno: 22. 3. 2010, 14:11:52
|
||
ErnieCZ Profil |
#7 · Zasláno: 22. 3. 2010, 14:56:57
Omlovám se,
upřimně nejsem ještě tak zasvěcený... ale myslím, že používáme Oracle 9 bezici na RHEL, jestli to nějak pomůže... |
||
Kajman_ Profil * |
#8 · Zasláno: 22. 3. 2010, 15:09:01
Tak použijte nvl i from dual.
|
||
ErnieCZ Profil |
#9 · Zasláno: 22. 3. 2010, 16:19:53
Super, moc diky...
mohl byste mi poradit jeste s necim? Jak muzu pouzit select t.nazev,nvl(count(b.id)) from ........... pokud totiž za tim from poziji (select 'jabko' as nazev union select 'hruska' as nazev ) tedy vice než jeden select napiše to tuto chybu... ORA-00937: not a single-group group function samozrejme docele mam group by... |
||
Kajman_ Profil * |
#10 · Zasláno: 22. 3. 2010, 16:48:52
Proč tam dáváte count na id, když v prvním příspěvku píšete, že máte ve struktuře množství přímo v pocet_sklad? Proč tam nedáte to from dual? A nvl je kolem count() zbytečné - ta funkce nikdy nevrátí null. Ukažte celý dotaz, ta hláška tvrdí, že group by docela nepoužíváte.
|
||
ErnieCZ Profil |
#11 · Zasláno: 22. 3. 2010, 18:19:42
Ano, to je pravda...chtěl jsem zkusit pouzit count misto poctu v bunce, ktera neni vzdy aktualni...ale to bude asi zbytečné..
díky... |
||
Časová prodleva: 14 let
|
0