Poslední příspěvky

Stran: 1 [2] 3 4 ... 10
11
Ostatní DB / Re:SQLite - výsledky v jednej tabuľke
« Poslední příspěvek od Slavomir 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!
12
Ostatní DB / Re:SQLite - výsledky v jednej tabuľke
« Poslední příspěvek od pf1957 kdy 24-01-2022, 14:16:32 »
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
13
Ostatní DB / Re:SQLite - výsledky v jednej tabuľke
« Poslední příspěvek od vandrovnik kdy 24-01-2022, 08:17:27 »
Firebird má funkci LIST, která by na to šla použít, SQLite nevím.
14
Ostatní DB / SQLite - výsledky v jednej tabuľke
« Poslední příspěvek od Slavomir 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.
15
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od Stanislav Hruška kdy 23-01-2022, 13:18:58 »
Kód: [Vybrat]
[quote]  Table := TDim2CurrencyArray.Create(
    TArray<Currency>.Create( 0, 3.0, 4.5, 6.0, 9.0, 12.0, 15.0),
    TArray<Currency>.Create(100, 3.9, 5.1, 6.1, 7.6,  8.7,  9.5)
    );
.
  Table := [
    [ 0, 3.0, 4.5, 6.0, 9.0, 12.0, 15.0],
    [100, 3.9, 5.1, 6.1, 7.6,  8.7,  9.5]
    ];
Ostanem pri tom druhom prípade. Lebo
  • nepotrebujem obecnejšie generiká. Získaním hodnoty z tabuľky všetko zahadzujem
  • priradenie hodnôt je omnoho čitateľnejšie a kratšie. Navyše bez Create.
  • zámenu oblých zátvoriek za hranaté urobím v PsPad ľavou zadnou
Prvý krok pre znovu vybudovanie DLL mám (teoreticky) za sebou.[/quote]
16
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od pf1957 kdy 23-01-2022, 13:01:37 »
Snáď by malo ísť aj
Kód: [Vybrat]
TDim2RealArray = array of array of Real
To je rovnocenne tomu zapisu s generiky. Vedle meho predchoziho prikladu, ktery je vhodnejsi pro obecnejsi generika, muzes pouzit inicializaci:
Kód: Delphi [Vybrat]
  1.   AA := [
  2.     [1.1, 1.2, 1.3, 1.4, 1.5],
  3.     [2.1, 2.2, 2.3, 2.4, 2.5]
  4.   ];
  5.  
17
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od Stanislav Hruška kdy 23-01-2022, 11:00:07 »
Snáď by malo ísť aj
Kód: [Vybrat]
TDim2RealArray = array of array of Real
18
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od Stanislav Hruška kdy 23-01-2022, 10:48:25 »
Aj som to skúšal. Ale nevedel som ako to inicializovať. Teraz si porovnám dva posledné príspevky. Ich + a -.
Hneď je svet krajší. Ďakujem.
Edit: tie dáta si tam nastrkám na požiadanie. V prípade potreby. Väčšinou budem potrebovať len pár tabuliek
19
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od pf1957 kdy 23-01-2022, 10:41:45 »
Tak som to mal aj predtým. Akurát som to skladal zo stringov. To čo momentálne mám sa mi vôbec nepáči. Hľadám ďalej.
Kdyz ty tabulky nemusis mit v ROM, tak je klidne muzes mit na heapu. Pak bych pouzil generica, jak jsi sam naznacoval, ale buhvi proc jsi to vzdal:
Kód: Delphi [Vybrat]
  1. TDim2RealArray = TArray<TArray<real>>

Pro kazdou tabulku bych nadefinoval promennou typu TDim2RealArray, kterou bych predaval jako parametr do vypoctu pres argument stejneho typu.

A nekde v inicializaci bych do tech promennych nastrkal data, napr.:
Kód: Delphi [Vybrat]
  1. Initialization
  2.  
  3.   AA := TArray<TArray<real>>.Create(
  4.     TArray<real>.Create(1.1, 1.2, 1.3, 1.4, 1.5 ...),
  5.     TArray<real>.Create(2.1, 2.2, 2.3, 2.4, 2.5 ...)
  6.     ...
  7.   );
  8.  
  9.   AB := TArray<TArray<real>>.Create(
  10.     TArray<real>.Create(11.1, 11.2 ...),
  11.     TArray<real>.Create(21.1, 22.2 ...),
  12.     TArray<real>.Create(31.1, 32.2 ...),
  13.     TArray<real>.Create(41.1, 42.2 ...),
  14.     TArray<real>.Create(51.1, 52.2 ...),
  15.     TArray<real>.Create(61.1, 62.2 ...)
  16.     ...
  17.   );
  18.  

Nebo spravne by to melo byt:
Kód: Delphi [Vybrat]
  1.   AA := TDim2RealArray.Create(
  2.     TArray<real>.Create(1.1, 1.2, 1.3, 1.4, 1.5 ...),
  3.     TArray<real>.Create(2.1, 2.2, 2.3, 2.4, 2.5 ...)
  4.     ...
  5.   );
  6.  
  7.   ...
  8.  


No a pak metoda, ktera s temi poli pracuje, napr.
Kód: Delphi [Vybrat]
  1. function TXxx.GetDim2RealValue(ARealArray: TDim2RealArray; ARowIdx,
  2.   AColIdx: integer): real;
  3. begin
  4.   Result := ARealArray[ARowIdx, AColIdx];
  5. end;
  6.  

= prace s tim je jako s obycejnym polem, jen rozmery pole budes misto Low/High ziskavat pomoci Length

20
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od Stanislav Hruška kdy 23-01-2022, 09:59:20 »
Tak som to mal aj predtým. Akurát som to skladal zo stringov. To čo momentálne mám sa mi vôbec nepáči. Hľadám ďalej. Toto riešenie vyzerá z môjho pohľadu lepšie
Kód: [Vybrat]
type
  TMatrix = array[1..3,1..3] of ;   //  Tu autor neuviedol definíciu
procedure MakeMat(var c: TMatrix; nr, nc: integer; a: array of double);
var
  I, K: integer;
begin
  SetLength(c, nr, nc);
  for I := 0 to nr-1 do
    for K := 0 to nc-1 do
      c[I, K] := a[I * nc + K];
end;
.
MakeMat(ya, 5, 11,
       [1.53,1.38,1.29,1.18,1.06,1.00,1.00,1.06,1.12,1.16,1.18,
        0.57,0.52,0.48,0.44,0.40,0.39,0.39,0.40,0.42,0.43,0.44,
        0.27,0.25,0.23,0.21,0.19,0.18,0.18,0.19,0.20,0.21,0.21,
        0.22,0.20,0.19,0.17,0.15,0.14,0.14,0.15,0.16,0.17,0.17,
        0.20,0.18,0.16,0.15,0.14,0.13,0.13,0.14,0.14,0.15,0.15]);
Teraz sa pokúsim o realizáciu.
Doteraz som neprišiel na spôsob, ako do funkcie priamo narvať const array. Všetky riešenia sú pomocou type Txx = yy. Pre viacrozmerné polia som našiel asi len to čo je tu uvedené.

Stran: 1 [2] 3 4 ... 10