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
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 *
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.
ErnieCZ
Profil
diky...zkusim to...
ErnieCZ
Profil
Díky moc...ale mam takovy problem... prikaz ifnull nefunguje v databazi, ve ktere pracuji...a nemam moznost pridavat nebo upravovat...
Kajman_
Profil *
Není to tam nutné, když tam může být null. Jinak se ta fuknce v některých db jen prostě jinak jmenuje... coalesce, nvl.

Také možná bude nutné upravit výpis bez tabulky na
select 'jabko' as nazev from dual


Těžko se radí, když ani nepovíte, pro kterou platformu řešení hledáte.
ErnieCZ
Profil
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 *
Tak použijte nvl i from dual.
ErnieCZ
Profil
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 *
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
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...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0