Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako setovati vrijednost promenljive (u SQL-u) bez koriscenja WHERE clause i kursora?

[es] :: MS SQL :: Kako setovati vrijednost promenljive (u SQL-u) bez koriscenja WHERE clause i kursora?

[ Pregleda: 2255 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nikitaGradov
Beograd

Član broj: 223576
Poruke: 206
95.180.68.*



+3 Profil

icon Kako setovati vrijednost promenljive (u SQL-u) bez koriscenja WHERE clause i kursora?28.02.2014. u 15:19 - pre 123 meseci
Da ne pravim neki veliki uvod, evo teksta zadatka (uz uslov da sam pitanje 'smjestio' na pravu adresu, odnosno, podforum) - tema je SQL:

- data je promjenljiva, recimo, @AAA nvarchar(100) i nekakva tabela, recimo dbo.Lica, a u toj tabeli postoje polja: Ime, Prezime i, jasno, Lice_ID
- zadatak: promjenljivoj @AAA dodeijliti vrijednost 'Ime', pa 'razmak', pa 'Prezime', iz tabele dbo.Lica, pri cemu je Lice_ID = 5, ALI BEZ koriscenja WHERE clause i kursora. Cak stavise, dati dva takva rjesenja ...

Ja , da budem posten, ne znam kako ovo da uradim bez koriscenja WHERE clause ... imas li neku ideju kako se to radi ?

Veliki pozdrav i unaprijed hvala ...
Programming is fun, but writing good software is hard ...
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
109.121.60.*

Sajt: www.drinacoding.com


+14 Profil

icon Re: Kako setovati vrijednost promenljive (u SQL-u) bez koriscenja WHERE clause i kursora?01.03.2014. u 06:39 - pre 123 meseci
Ne znam kakvog smisla ima ovakav zahtev, odnosno zbog čega izbeći WHERE klauzulu, ali evo jednog rešenja:
Code:
DECLARE @AAA NVARCHAR(100) = (SELECT l.Ime + ' ' + l.Prezime FROM Lica l INNER JOIN (SELECT 5 AS Id) t ON l.Id = t.Id)
 
Odgovor na temu

nikitaGradov
Beograd

Član broj: 223576
Poruke: 206
95.180.68.*



+3 Profil

icon Re: Kako setovati vrijednost promenljive (u SQL-u) bez koriscenja WHERE clause i kursora?01.03.2014. u 11:04 - pre 123 meseci
Hvala na odgovoru ... ja nisam izmislio ovaj zadatak - radi se o zadatku sa testa za prijem u jednu (beogradsku) firmu ... u medjuvremenu, dobio sam jos jedno moguce rjesenje, koriscenjem HAVING clause ...

i mene zivo interesuje u cemu je poenta zadatka: da li je HAVING i/ili rjesenje koje si predlozio brze od WHERE clause ?
Programming is fun, but writing good software is hard ...
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
109.121.51.*

Sajt: www.drinacoding.com


+14 Profil

icon Re: Kako setovati vrijednost promenljive (u SQL-u) bez koriscenja WHERE clause i kursora?01.03.2014. u 11:33 - pre 123 meseci
Evo male igračke:
Code:
DECLARE @Lica TABLE (LiceId INT, Ime NVARCHAR(15), Prezime NVARCHAR(15))
INSERT INTO @Lica (LiceId, Ime, Prezime) VALUES (1, N'Jovan', N'Jovanović')
INSERT INTO @Lica (LiceId, Ime, Prezime) VALUES (2, N'Milan', N'Milanović')
INSERT INTO @Lica (LiceId, Ime, Prezime) VALUES (3, N'Marko', N'Marković')
INSERT INTO @Lica (LiceId, Ime, Prezime) VALUES (4, N'Mira', N'Jovanović')
INSERT INTO @Lica (LiceId, Ime, Prezime) VALUES (5, N'Jovana', N'Milovanović')
INSERT INTO @Lica (LiceId, Ime, Prezime) VALUES (6, N'Slađana', N'Perić')
INSERT INTO @Lica (LiceId, Ime, Prezime) VALUES (7, N'Zoran', N'Vidić')
INSERT INTO @Lica (LiceId, Ime, Prezime) VALUES (8, N'Zorica', N'Biljić')
INSERT INTO @Lica (LiceId, Ime, Prezime) VALUES (9, N'Milovan', N'Perišić')

DECLARE @I AS INT
DECLARE @Id AS INT
DECLARE @Vreme1 DATETIME
DECLARE @Vreme2 DATETIME
DECLARE @Vreme3 DATETIME
DECLARE @AAA NVARCHAR(100)

SET @Id = 5

SET @Vreme1 = GETDATE()
SET @I = 1
WHILE (@I < 10000)
BEGIN
    SET @AAA = (SELECT Ime + ' ' + Prezime FROM @Lica WHERE LiceId = @Id)
    SET @I = @I + 1
END
SELECT GETDATE() - @Vreme1

SET @Vreme2 = GETDATE()
SET @I = 1
WHILE (@I < 10000)
BEGIN
    SET @AAA = (SELECT l.Ime + ' ' + l.Prezime FROM @Lica l INNER JOIN (SELECT @Id AS Id) t ON t.Id = l.LiceId)
    SET @I = @I + 1
END
SELECT GETDATE() - @Vreme2

SET @Vreme3 = GETDATE()
SET @I = 1
WHILE (@I < 10000)
BEGIN
    SET @AAA = (SELECT Ime + ' ' + Prezime FROM @Lica GROUP BY Ime, Prezime HAVING MAX(LiceId) = @Id)
    SET @I = @I + 1
END
SELECT GETDATE() - @Vreme3
GO
 
Odgovor na temu

nikitaGradov
Beograd

Član broj: 223576
Poruke: 206
95.180.68.*



+3 Profil

icon Re: Kako setovati vrijednost promenljive (u SQL-u) bez koriscenja WHERE clause i kursora?01.03.2014. u 18:05 - pre 123 meseci
Hvala na 'maloj igracki', barem je meni posluzila da nesto novo naucim ...

na mom laptop-u, HP 550, SQL Server Management Studio 'kaze' da je najbrze setovanje promenljive preko 'inner join' (sto, moram da priznam, nisam ocekivao), pa preko 'where' (skoro isto, nesto malo duze nego preko inner join, sto nisam ocekivao), a ubedljivo najsporije je preko 'having' ... pa je logicno pitanje, barem za mene, 'a sto bi neko koristio HAVING umjesto WHERE u ovakvoj situaciji' ? ili je pitanje imalo za cilj samo provjeru poznavanja, da se tako izrazim, sql naredbi ?

Jos jednom hvala na odvojenom vremenu i pozdrav ...
Programming is fun, but writing good software is hard ...
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
109.121.51.*

Sajt: www.drinacoding.com


+14 Profil

icon Re: Kako setovati vrijednost promenljive (u SQL-u) bez koriscenja WHERE clause i kursora?01.03.2014. u 18:16 - pre 123 meseci
Nema na čemu.
Eto ti ideje da sam praviš igračke i da se igraš ;-)
 
Odgovor na temu

[es] :: MS SQL :: Kako setovati vrijednost promenljive (u SQL-u) bez koriscenja WHERE clause i kursora?

[ Pregleda: 2255 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.