Autor Téma: SQLite - výsledky v jednej tabuľke  (Přečteno 720 krát)

Offline Slavomir

  • Mladík
  • **
  • Příspěvků: 81
  • Karma: 0
    • Verze Delphi: 10.3 CE, Lazarus 2.0.10
    • RQ Money
SQLite - výsledky v jednej tabuľke
« kdy: 24-01-2022, 07:58:03 »
Ahojte,
prosím o radu, či je možné získať z jedného SQLite dotazu nasledovné výsledky.
Povedzme, že mám dve jednoduché tabuľky v relácii 1:N. Prvá tabuľka (napr. TOVAR), druhá tabuľka (napr. VLASTNOSTI). Logicky z toho vyplýva, že 1 tovar môže mať N vlastností.
Krátky príklad štruktúry polí:
TOVAR: tov_ID, tov_nazov
VLASTNOSTI - vla_ID, vla_nazov

Potrebujem dosiahnuť nasledovný výsledok (pomocou jedného dotazu !):

tov_ID; tov_nazov; (zoznam všetkých priradených vlastností)
1; lampa; (malá | biela | 220V)
2; stolička; (veľká | drevená)
3; televízia; (veľká | LCD | 220V)
4; hračka; (malá | biela)

Toto je len fiktívny príklad, v skutočnosti sú údaje viac logickejšie...  ;D Zátvorky pri vlastnostiach nie sú povinné.
Nemám problém získať údaje pomocou viacerých dotazov, ale vzhľadom na objem dát by som to chcel dosiahnuť iba jedným SQLite dotazom.
Ďakujem za pomoc.
« Poslední změna: 24-01-2022, 08:01:20 od Slavomir »
IDE - Lazarus, Delphi
Program - RQ Money

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1586
  • Karma: 52
    • Verze Delphi: 11.3
Re:SQLite - výsledky v jednej tabuľke
« Odpověď #1 kdy: 24-01-2022, 08:17:27 »
Firebird má funkci LIST, která by na to šla použít, SQLite nevím.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:SQLite - výsledky v jednej tabuľke
« Odpověď #2 kdy: 24-01-2022, 14:16:32 »
Excellent
Rated 1 time
Firebird má funkci LIST, která by na to šla použít, SQLite nevím.
SQLite ma group_concat(), coz by mohla byt podobna agregacni funkce jako List(), ale nikdy jsem ani jednu nepouzil

Offline Slavomir

  • Mladík
  • **
  • Příspěvků: 81
  • Karma: 0
    • Verze Delphi: 10.3 CE, Lazarus 2.0.10
    • RQ Money
Re:SQLite - výsledky v jednej tabuľke
« Odpověď #3 kdy: 24-01-2022, 16:40:34 »
SQLite ma group_concat(), coz by mohla byt podobna agregacni funkce jako List(), ale nikdy jsem ani jednu nepouzil
Trefa do čierneho! Príkaz group_concat() funguje presne takto, ako potrebujem.
Priznám sa, táto funkcia mi bola doteraz neznáma. Srdečná vďaka za pomoc!
IDE - Lazarus, Delphi
Program - RQ Money