IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: dotaz do databáze s výpisem více řádků a více sloupců do stringu

Aktivity
Avatar
Ježek Vít :15.12.2018 20:47

Potřebuji poradit se strukturou dotazu.
v tabulce (databázi) si najdu řádky s ´IDzaznamKontroly´ (předem není dané, kolik řádků to celkem bude (dotaz s počtem těchto řádků zvládám)) a u těchto řádků potřebuji vypsat tři sloupce "DatumKontroly, CasKontroly, PoznamkaKontroly" a to tak, aby řádky byly zároveň i odřádkované.

Zkusil jsem: Dosel jsem k dotazu:
SELECT Kontroly.IDzaz­namKontroly, Kontroly.Datum­Kontroly, Kontroly.CasKon­troly, Kontroly.Poznam­kaKontroly FROM Kontroly WHERE (((Kontroly.ID­zaznamKontroly)=149)) ORDER BY Kontroly.Datum­Kontroly, Kontroly.CasKon­troly";

v tabulkovém přehledu mi to vypíše vše co potřebuji, ale při převodu na text mi to vypíše jen IDzaznamKontroly, tj. např. "149".

Chci docílit: Výpis ve formátu např.:
"15.8.2018 14:24: Přišel s červeným kulichem
16.8.2018 11:61: Odešel poněkud posmutnělý
17.5.2018 10:01: Přinesl bonboniéru"

Odpovědět
15.12.2018 20:47
Nemyslím, tedy nejsem.
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:17.12.2018 8:08
  1. zkus formatovani http://www.dpriver.com/…qlformat.htm
  2. zkus pouzit pro vlozeni kodu tlacitko editoru code </>
  3. protoze pouzivas tabulku kontroly, jen tu, neni treba to psat na kazdy radek
  4. pak tam mas zbytecne zavorky
SELECT
       idzaznamkontroly,
       datumkontroly,
       caskontroly,
       poznamkakontroly
FROM
       kontroly
WHERE
      idzaznamkontroly = 149
ORDER  BY
      datumkontroly ASC,
      caskontroly ASC

Vyber sloupce (jejich seznam je v select) z tabulky kontroly, kde id=149 a vyslednou tabulku serad dle order BY.
Cili, to by melo ziskat data, ktera muzes preformatovat na tabulku, kterou jsi tam napsal. Pokud to tak neni, delas neco spatne pri formatovani tabulky.

5. Co znamena "v tabulkovém přehledu mi to vypíše"?
Pokud si pustis sql konzolu, napises tam tento dotaz, vypise to tabulku jako plain-text.
Kdyz si pustis phpmyadmina. Otevres databazi. Kliknes na sql zalozku. Vlozis tam tento dotaz, vypise to tabulku jako html-text.
Kdyz si vemes treba php. Sql dotaz napises do stringu (muzes pouzit formatovani, php si to umi odstranit). Tento string predas sql prikazu. Sql prikaz (query) ti vrati $result = id-resource. Pokud das v php echo $result, tak to vypise jen cislo pameti nebo sql pripojeni(ted si nejsem jisty). Misto v pameti, kam ulozil v jakemsi sql formatu data. Ty pak je treba prevzit pomoci jineho php prikazu (fetch) a prepsat do pole. Toto pole muzes pres var_dump nebo echo vypisovat a nebo ho muzes formatovat do html tabulky.

6. " při převodu na text mi to vypíše jen IDzaznamKontroly, tj. např. "149""
Opet, neni to jasne. Souvisi to s bodem 5. Jaky prikaz (php / sql) jsi pouzil, ze ti vypise id zaznamu? Nejspis je chyba prave v pouzitem php prikazu (nebo, jaky jazyk pouzivas)

 
Nahoru Odpovědět
17.12.2018 8:08
Avatar
Odpovídá na Peter Mlich
Ježek Vít :18.12.2018 21:34

2.3: ok, ponaučím se.
5: použil jsem MS Office Acces, kde jsem zkoušel dotaz vytvořit s dopomocí poskytovaných funkcí. Tam když ten dotaz zadám, tak mi to zobrazí v tabulce (jako excelovské buňky, ale jde to exportovat i do *.txt, kde je výsledkem také tabulka se všemi řádky, které chci vypsat....
ne zcela rozumím všemu co jsi napsal, takže si na to budu muset pořádně sednout a doučit se :-)
6: píšu v C#, WPF...

Podle všeho co tak přemýšlím, je dotaz správný, mám pocit, že to bude spíš chyba v kódu a/nebo způsobu jak ho v programu vypisuji. Na tím také musím zabádat.
každopádně děkuji za informace, minimálně mi pomohou se dostat ve znalostech o kousek dál.

Nahoru Odpovědět
18.12.2018 21:34
Nemyslím, tedy nejsem.
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:19.12.2018 7:42

5. Tak v tom pripade je sql dotaz spravny. Ten MS Access je neco jako phpmyadmin, vypise ti vyslednou tabulku podle dotazu. Kdyby byl dotaz spatny, vypise tam error nebo 0 radku. Problem mas potom ve vypise ve svem programu. To se da resit googlem, pripadne bys musel napsat kod, a mozna lepe do forka pro ten jazyk.
google = jazyk prikaz example (napr: php mysql_query example | php mysql_fetch_assoc example)

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
19.12.2018 7:42
Avatar
Odpovídá na Peter Mlich
Ježek Vít :19.12.2018 13:26

Bude to tak a ne jinak. Jdu vysledovat chybu v kódu v programu.

Nahoru Odpovědět
19.12.2018 13:26
Nemyslím, tedy nejsem.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.