Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno TQuery - Ako zapísať select s group by

Poprosím o banálnu vec, ktorá ma už dosť vytáča. Nejako som vyšiel z cviku a teraz akosi neviem, kde je chyba. Delphi je v tomto dosť tvrdé.

Mám tabuľky:

create table Sklad (
  ID            autoinc,
  Code          varchar(30),
  Name          varchar(100),
  primary key   (ID)
)

create table Pohyby (
  ID            autoinc,
  ID_STOCK      integer,
  Price         decimal(12,2),
  Pieces        integer,
  Move          varchar(20),
  primary key   (ID)
)

A tu je pán select:

select
  Sklad.ID, Sklad.Code, Sklad.Name, min(Pohyby.Price) as PriceMin, max(Pohyby.Price) as PriceMax
from
  Sklad, Pohyby
where
  Sklad.ID = Pohyby.ID_STOCK
group by
  Sklad.ID
order by
  Code

Myslím, že MySQL by to zhltlo a trochu viac robím práve s tým, tak som vyšiel z cviku. Môžte mi prosím pomôcť nájsť chybu.

Předmět Autor Datum
Keď používaš GROUP BY, tak môžeš vybrať len stĺpce, podľa ktorých zoskupuješ (v tomto prípade Sklad.…
los 19.04.2008 22:24
los
A nebo musi ty sloupce strcit do agreagacni funkce: Sklad.ID, Max(Sklad.Code) As Code, Max(Sklad.Na…
Jan Fiala 20.04.2008 07:43
Jan Fiala
Myslíš do group by? To sa pýtam len pre zaujímavosť, už mi to funguje.
msx. 20.04.2008 10:09
msx.
Ne. Jsou 2 moznosti: 1. (Los) - do GroupBy pridat vsechny neagregovana pole 2. GroupBy nechat, jak j… poslední
Jan Fiala 20.04.2008 10:59
Jan Fiala
Ďakujem.
msx. 20.04.2008 10:08
msx.

Keď používaš GROUP BY, tak môžeš vybrať len stĺpce, podľa ktorých zoskupuješ (v tomto prípade Sklad.ID). Z ostatných stĺpcov môžeš získať dáta len pomocou agregačných funkcií (ako napr. MAX alebo SUM). Čiže buď budeš zoskupovať aj podľa Sklad.Code a Sklad.Name, alebo tie dva stĺpce nebudeš vôbec vyberať.

Zpět do poradny Odpovědět na původní otázku Nahoru