Geek tričko zdarma Geek tričko zdarma
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde

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

Aktivity (1)
Avatar
Hojdar Vít
Člen
Avatar
Hojdar 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
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
Hojdar Vít
Člen
Avatar
Odpovídá na Peter Mlich
Hojdar 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
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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 19.12.2018 7:42
Avatar
Hojdar Vít
Člen
Avatar
Odpovídá na Peter Mlich
Hojdar 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
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.