Tema: Re: SQL klausimas
Autorius: Jornada Del Muerto
Data: 2010-11-16 16:15:57
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 
>