[ Neznanac_ @ 13.07.2009. 21:32 ] @
Potrebna mi je pomoc za upit, ne koristeci kursor.
Imam 2 tabele sa identicnim kolonama: Datum, Mesto i Stanje. Kombinacija Datum, Mesto je primarni kljuc i ne postoji isti par u prvoj i drugoj tabeli. Kolona Stanje u prvoj tabeli je prazna. Potrebno je popuni tu kolonu uz pomoc druge i to na sledeci nacin:
Za par (Datum, Mesto) iz prve tabele pronaci maksimalni datum iz druge tabele koji je manji od datuma iz prve takav da je mesto iz prve kolone isto sa mestom iz druge kolone i prepisati Stanje tog reda u prvu tabelu. I tako za svaki red iz prve kolone.
[ sparc @ 14.07.2009. 07:01 ] @
UPDATE PrvaTabela
set PrvaTabela.stanje = (select top 1 DrugaTabela.stanje from DrugaTbela
WHERE PrvaTabela.Datum > DrugaTabela.Datum
AND PrvaTabela.Mesto = DrugaTabela.Mesto
ORDER BY DrugaTabela.Datum DESC)
[ Neznanac_ @ 14.07.2009. 22:04 ] @
Hvala na pomoci. Ali mi ovaj upit vraca samo jednu vrednost.
Meni je potrebno za svaki red iz prve tabele da se upise odgovarajuca vrednost iz druge.
[ sparc @ 15.07.2009. 06:49 ] @
Ne razumem te, daj kratak primer.
[ Neznanac_ @ 15.07.2009. 16:57 ] @
Evo primera. Script za kreiranje tabela:
Code:


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Tabela_koja_se_puni](
    [Datum] [datetime] NULL,
    [Mesto] [char](20) NULL,
    [Stanje] [char](10) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF



GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Tabela_kojom_se_puni](
    [Datum] [datetime] NULL,
    [Mesto] [char](20) NULL,
    [Stanje] [char](10) NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF


 



Slogovi u tabeli Tabela_koja_se_puni su:

2009-05-13 00:00:00.000 Beograd NULL
2009-05-16 00:00:00.000 Nis NULL
2009-05-13 00:00:00.000 Nis NULL
2009-05-13 00:00:00.000 Subotica NULL
2009-05-16 00:00:00.000 Subotica NULL
2009-05-16 00:00:00.000 Beograd NULL


Slogovi u tabeli Tabela_kojom_se_puni:

2009-05-12 00:00:00.000 Beograd 21
2009-05-12 00:00:00.000 Nis 22
2009-05-12 00:00:00.000 Subotica 23
2009-05-15 00:00:00.000 Beograd 31
2009-05-15 00:00:00.000 Nis 32
2009-05-15 00:00:00.000 Subotica 33

Upit treba da za prvi slog (2009-05-13 00:00:00.000 Beograd NULL) nadje u drugoj tabeli slog koji ima max datum koji je manji od 2009-05-13 i kome je Mesto Beograd i da prepise njegovo stanje tj. naci ce slog: 2009-05-12 00:00:00.000 Beograd 21 i upisati stanje 21 umesto null. I tako za svaki red.

[ snekis @ 21.07.2009. 08:58 ] @
Gornji update ti unese pravilno podatke u tvoju tabelu. Proveri još jednom.