Tema: Re: SQL klausimas
Autorius: CGI 600
Data: 2010-11-16 20:04:24
Na uzklausa tai dvejeto vierta :) Uz struktura tai net 0 negalima rasyti :D

On 2010.11.16 16:15, Jornada Del Muerto wrote:
> Duombazes struktura jei vienoje lenteleje laikai viska (info apie parduotuve + prekes jos )  is karto kuolo verta...
>
> Jei tos pacios prekes skirtingose parduotuvese turi skirtingas kainas tai simple struktura butu daugmaz tokia:
>
> imones (id, pavadinimas ) // aka maxima, rimi ir t.t..
> parduotuves ( id, imonesId, pavadinimas, adresas )    // pvz. gal konkrecioj pardej akcija
> preke ( id , pavadinimas )
> asortimentas ( id, parduotuvesId, prekesId, kiekis, kaina )
>
>
> Na pagal tavo tokia ne itin man patinkancia struktura butu taip, sukuriu tam lenta:
>
> CREATE TABLE [dbo].[alaus_kainos](
>   [id] [int] IDENTITY(1,1) NOT NULL,
>   [parduotuve] [nvarchar](100) COLLATE Lithuanian_CI_AS NULL,
>   [preke] [nvarchar](100) COLLATE Lithuanian_CI_AS NULL,
>   [kaina] [money] NOT NULL CONSTRAINT [DF_alaus_kainos_kiaina]  DEFAULT ((0)),
>   CONSTRAINT [PK_alaus_kainos] PRIMARY KEY CLUSTERED
> (
>   [id] ASC
> )WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
> ) ON [PRIMARY]
>
> ten suvesi parduotuves savo, prekes ir kainas, tada vaziuojam toliau:
>
> SELECT
>   ak1.parduotuve,
>   ak1.preke,
>   ak1.kaina
> FROM
>   alaus_kainos ak1
> INNER JOIN (
>   -- Jamam visu prekiu minimalias kainas
>   -- tai galetu buti ir view'u aka vwMinPrices
>   -- is kurio laisvai selectintum po to
>   SELECT  preke,   MIN(kaina) AS kaina
>   FROM  alaus_kainos
>   GROUP BY preke
> ) ak2 ON ak2.preke = ak1.preke
>    And ak2.kaina = ak1.kaina
>
> it works, tested! :) nors ir kiek tupoka uzklausa gavosi :)
>
>
> Freelancer Developer
> http://www.lythum.lt
>
>
>
>
>
> "System"<vytautas.butkus@gmail.com>  wrote in message news:ibtrsa$pt$1@trimpas.omnitel.net...
>> Sveiki,
>>
>> Sukuriau lentele, kurioje yra info apie Parduotuve, prekes parduodamas tose
>> parduotuvese, kainas ir kiekius. Sakykim yra preke pavadinimu Alus Maximoj
>> ir Rimi, bet Maximoj tas alus kainuoja 1LT kai Rimi kainuoja 2LT. Noriu
>> padaryti SELECT'a visoms prekems kurios yra lentelese ir matyti tik tas,
>> kurios parduodamos uz maziausia kaina kazkokioje parduotuveje.
>>
>> pvz:
>> Maxima ALUS 1lt
>> Rimi ALUS 2lt
>> IKI CIPSAI 3LT
>> Maxima CIPSAI 4LT
>>
>> rezultatas turetu buti:
>> Maxima ALUS 1lt
>> IKI CIPSAI 3LT
>>
>> Ar cia reikia daryti su WHERE salyga, ar su HAVING? Galvoje sukasi
>> variantas, kad reiktu su WHERE daryti ir kazkaip subselect'a sugeneruoti
>> kuris grazintu maziausia kaina atitinkamai prekei?
>>
>> Dekui
>>