малък SQL
6 отговора
431 прегледа
малък SQL
imam tablica А:
KOD IME DATA DRUGI POLETA
1 KIRO 1.1.2004 1 2 2 1
2 KIRO 3.1.2004 2 6 3 3
3 KRASI 1.1.2004 3 3 5 1
4 KRASI 3.1.2004 1 1 2 5
5 KRASI 4.1.2004 2 3 5 1
Трябват ми редовете, които имат най-високи стойности за датата за всяко име, т.е.:
2 KIRO 3.1.2004 2 6 3 3
5 KRASI 4.1.2004 2 3 5 1
Проблемът е, че "другите" полета имат различни стойности и с групировка нищо не става :(
плеасе хелп :))
KOD IME DATA DRUGI POLETA
1 KIRO 1.1.2004 1 2 2 1
2 KIRO 3.1.2004 2 6 3 3
3 KRASI 1.1.2004 3 3 5 1
4 KRASI 3.1.2004 1 1 2 5
5 KRASI 4.1.2004 2 3 5 1
Трябват ми редовете, които имат най-високи стойности за датата за всяко име, т.е.:
2 KIRO 3.1.2004 2 6 3 3
5 KRASI 4.1.2004 2 3 5 1
Проблемът е, че "другите" полета имат различни стойности и с групировка нищо не става :(
плеасе хелп :))
Re: малък SQL
нали се сещаш. че така дава грешка :
"When GROUP BY exists, every simple field in projectors must be in GROUP BY."
Справката става като ползвам временна таблица, но все се надявах да стане и по друг начин, примерно с клауза HAVING, която да си призная, никога не съм ползвал досега... Знам, че не съм най-умния и затова питам :)
"When GROUP BY exists, every simple field in projectors must be in GROUP BY."
Справката става като ползвам временна таблица, но все се надявах да стане и по друг начин, примерно с клауза HAVING, която да си призная, никога не съм ползвал досега... Знам, че не съм най-умния и затова питам :)
Re: малък SQL
_danitu ти е дал решение за mysql, ти трябваше да споменеш може би все пак какъв продукт ползваш
може да се направи без временна таблица нещо като така
SELECT t.* FROM tbl AS t, (SELECT name, max(date) AS date FROM tbl GROUP BY name) AS h WHERE t.name = h.name AND t.date = h.date;
може и с ID вместо с name по-бързо би трябвало да е
(това горе-долу е като с временна таблица, ама с една заявка)
не се сещам дали има друго решение в момента
синтаксиса може да ти е по-различен за различните ДБ-та
може да се направи без временна таблица нещо като така
SELECT t.* FROM tbl AS t, (SELECT name, max(date) AS date FROM tbl GROUP BY name) AS h WHERE t.name = h.name AND t.date = h.date;
може и с ID вместо с name по-бързо би трябвало да е
(това горе-долу е като с временна таблица, ама с една заявка)
не се сещам дали има друго решение в момента
синтаксиса може да ти е по-различен за различните ДБ-та
Re: малък SQL
мдам, за mysql си мислех ама вярно че никъде не си написал каква БД все пак е .....
Re: малък SQL
select * from table t where DATA=(select max(DATA) from table where NAME=t.NAME)
Re: малък SQL
Мерси много, това проработи чудно.. Харесвам малки спретнати кодове :) Мерси пак :)