Portál AbcLinuxu, 14. května 2025 02:57

Dotaz: dotaz z SQL

11.5.2010 18:10 daton
dotaz z SQL
Přečteno: 495×
Odpovědět | Admin
Dobrý den Potřeboval bych vyřešit jeden dotaz, pokud je to vůbec možné. V DB Postgresql mám obdobné dvě tabulky:
remesla:
  nazev   ulice   cislo 
  svec    panska    22
  obuvník repky     66
  hrncir  vesela    33
  reszni  vesela    12
  tiskar  repky     10
prostory:
  typ        ulice   cislo
  parkoviste  panska  50
  vrakoviste  repky   67
  sklady      tomova  88
  sady        horka   5 

Potřeboval bych nad nimi učinit dotaz tak, aby mi ve výsledku vypadly jen ulice, názvy a typy, ale aby se nic neopakovalo. Děkuji za pomoc

Řešení dotazu:


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

Odpovědi

11.5.2010 19:11 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: dotaz z SQL
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkuste to napsat srozumitelněji a pokud možno ukázat, jak byste si v tom vašem konkrétním příkladu představoval výsledek. A také příště použijte element pre, nutnost podívat se do zdrojáku stránky ochotě odpovídat taky moc neprospívá.
12.5.2010 10:12 Ivo
Rozbalit Rozbalit vše Re: dotaz z SQL
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co tak toto:

select distinct nazev, ulice, typ from remesla;

12.5.2010 10:23 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: dotaz z SQL
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příště si prosím prohlédněte náhled dotazu, který se vám zobrazí – viděl byste, že dotaz byl nečitelný. Formátování jsem upravil.

Řešením je takovýhle dotaz:
SELECT DISTINCT ulice, cislo FROM remesla
UNION SELECT DISTINCT ulice, cislo FROM prostory;
Lepší by ale bylo tabulky normalizovat a adresy vytknout do samostatné tabulky.
12.5.2010 17:53 daton
Rozbalit Rozbalit vše Re: dotaz z SQL
Děkuji za odpověď, ano to je ono, skutečně se to generuje tak, jak jsem chtěl. Ještě bych se ale chtěl zeptat, zda by se dalo dotázat pouze na jednu ulici, aby bylo vidět kolik řemesel a prostor je v jedné ulici? Děkuji. PS bohužel, normalizovat tabulky nemohu, protože se jedná o vektorové vrstvy a v mapě by by to znamenalo ztrátu informace.
12.5.2010 18:18 Skrisa
Rozbalit Rozbalit vše Re: dotaz z SQL
select sum(pocet) as celk_pocet from (select ulice, count(*) as pocet from remesla group by ulice union select ulice, count(*) as pocet from prostory group by ulice ) tmp where tmp.ulice='Švermova'
12.5.2010 18:18 Skrisa
Rozbalit Rozbalit vše Re: dotaz z SQL
...sorry za formatovani textu, ale tak snad to poberes
12.5.2010 22:04 daton
Rozbalit Rozbalit vše Re: dotaz z SQL
Zdravím a moc děkuji, funguje to skutečně skvěle na součty domů. Myslel jsem to však trochu jinak a pokud bych mohl poprosit ještě o vaše nápady, potřeboval bych zda by šlo, aby byly vypsány v dané ulici čísla popisná a pokud možno i název a typ, které by byly sloučny do jednoho zástupného sloupce (neco), například takto (jedná se o ulici Repky): neco cislo obuvník 66 tiskar 10 vrakoviste 67

Možná že to nepůjde, ale dík za váš nápady.
12.5.2010 22:08 daton
Rozbalit Rozbalit vše Re: dotaz z SQL
Pardon rozházela se tabukla, jak si to představuji tak ještě jednou:
 neco    cislo
obuvník    66 
tiskar     10 
vrakoviste 67

12.5.2010 22:10 daton
Rozbalit Rozbalit vše Re: dotaz z SQL
Opět se to nepovedlo, ale jistě si domyslíte že to mělo být pod sebou.
13.5.2010 02:04 FooBar
Rozbalit Rozbalit vše Re: dotaz z SQL
Nemuzu mluvit za ostatni, ale ja fakt nedomyslim ("cisar promine, ale cizinec nepromine!";) )... zkus se prosim vyjadrovat srozumitelnejc, a nez zacnes divoce odesilat prispevky, tak pouzivat tlacitko "nahled".
13.5.2010 09:36 daton
Rozbalit Rozbalit vše Re: dotaz z SQL
Zdravím všechny Za minulé příspěvky se omlouvám ale v náhledu je vše ok až potom se to rozhodí. Úloha kterou řeším je zřejmě školním případem toho, jak by se DB neměla používat. Jde o to, že tato databáze funguje s nástavbou která umístuje do tabulek geometrii prvků a pak je vykresluje v mapě. Protože jsou jednotlivé vrstvy mapy vykreslující tutéž scénu, ale s různými typy objektů odděleny, nelze jednoduše tabulky upravit například sloučením, protože by tím byla ztracena možnost editovat atributy v tabulkách nástrojem pro kreslení map se kterým pracují lidí neznalí. Pro dotaz, kterým bych demonstroval možnosti systému jsem si tedy vybral dvě vrstvy stejné mapy reprezentované dvěmi tabulkami, na kterých je zkreslena 1 vrstva remesla a druhá vrstva mapy prostory. Potřeboval bych nyní vymyslet dotaz tak, aby ve výsledku byly v jedné ulici ( která je na obou vrstvách mapy označena jako repka) vypsány čísla popisná a pokud možno i název a typ, které by byly sloučny do jednoho slupce s alias označením napříklade (neco) Takto by měl vypadat výstup: (jedná se o ulici Repky): (označní slopcu) neco | cislo (1 řádek noví tab) obuvník | 66 (2 řádek nové tab) tiskar | 10 (3 řádek nové tab)vrakoviste | 67 například takto SELECT DISTINCT ulice, cislo, nazev AS "neco" FROM remesla where ulice= 'repka' UNION SELECT DISTINCT ulice, cislo, typ AS "neco" FROM prostory where ulice= 'repka';

Jenže takto to nefunguje, skončí to na tom aliasu slupců nazev a typ změněných na neco.
Tarmaq avatar 14.5.2010 13:50 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: dotaz z SQL
napr. takto:
SELECT
   foo.nazev,
   foo.cislo
FROM (
    SELECT nazev, ulice, cislo FROM remesla
    UNION
    SELECT typ, ulice, cislo FROM prostory
) AS foo
WHERE foo.ulice = 'repky';
Don't panic!
14.5.2010 22:18 daton
Rozbalit Rozbalit vše Re: dotaz z SQL
Zdravím tak mi to vytvoří sloupce, ale nenaplní je to, zůstanou prázdné. Přijde mi to, jako kdyby ta databáze část kodu co je v závorce a má data neviděla.

14.5.2010 22:51 Daton
Rozbalit Rozbalit vše Re: dotaz z SQL
Tak jsem se přepsal v ulici, chodí to super, díky moc za nápady a rady a hlavně Tarmaqovi ten to elegantně vyřešil.
13.5.2010 10:07 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: dotaz z SQL
Formátování jsem upravil, je potřeba použít tag <pre>.

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.