group by и много полей

Mercury

Новичок
group by и много полей

Есть таблица t1 и поля id, data,fam,name,sotrudnik.Делаю

SELECT max(data),fam, FROM t1 GROUP BY fam
Все нормально.Но мне надо чтобы выводились остальные поля fam,name,sotrudnik.Если я пишу так

SELECT max(data),fam,name,sotrudnik FROM t1 GROUP BY fam,name,sotrudnik,data
то не получается.потому-что уже надо групировать по всем полям.А я хочу только по fam
 

Фанат

oncle terrible
Команда форума
а зачем ты пишешь "так"?
поему ты решил, что надо группировать по всем полям?
 

Фанат

oncle terrible
Команда форума
джойнь таблицу саму к себе по fam. если она у тебя уникальная.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Mercury, давай-ка схему таблицы, пример данных в ней и пример того, что ты хочешь получить в результате запроса. А то тебя ни здесь не понимают, ни на sql.ru

Автор оригинала: *****
поему ты решил, что надо группировать по всем полям?
Потому что иначе будет ошибка о том, что поля должны быть сгруппированы или использованы в агрегатной функции...
 

Mercury

Новичок
есть таблица с полями id ,name,id_sotrudnika,dolg,data нужно чтобы сделать такой запрос
select max(data),name,id_sotrudnika,dolg from t1 group by id_sotrudnika
 

Mercury

Новичок
есть таблица с полями id ,name,id_sotrudnika,dolg,data нужно чтобы сделать такой запрос
select max(data),name,id_sotrudnika,dolg from t1 group by id_sotrudnika.
чтобы не было ошибок
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Воспитывать будешь своих старших родственников.

Я кагбэ ещё раз (последний) повторю вопрос
...пример данных в ней и пример того, что ты хочешь получить в результате запроса...
 

Mercury

Новичок
надо select-ом выкатить значения полей которые находятся после Select
(Select max(data),name,id_sotrudnika,dolg from t1 group by id_sotrudnika.)
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Не, ты точно тупой. Я тебя не спрашиваю, какой запрос ты пишешь, и так понятно, что он неправильный. Если бы он был правильный, ты бы по форумам не пасся и не блеял жалобно.

Я у тебя прошу две вещи:
1) Привести пример данных, находящихся в таблице t1
2) Привести результат, который ты хочешь получить от запроса

Ты же мне, блин, в третий раз повторяешь свой неправильный запрос. Ты тупой.
 

Mercury

Новичок
таблицы как таковой нет просто хочу понять group by в postgre. в mysql это все получается.
id-1
name-ivan
data-20.10.08
id_sot-1
dolg-20
--
id-2
name-ivan
data-21.10.08
id_sot-1
dolg-21
Надо вывести максимальную дату max(data) где where id_sotrudnika='1' групируя по name

name-ivan
data-21.10.08
id_sot-1
dolg-21
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Mercury
таблицы как таковой нет просто хочу понять group by в postgre. в mysql это все получается.
Дададад, а теперь включи в мыскле sql_mode = ONLY_FULL_GROUP_BY и удивись.

id-1
name-ivan
data-20.10.08
id_sot-1
dolg-20
--
id-2
name-ivan
data-21.10.08
id_sot-1
dolg-21

Надо вывести максимальную дату max(data) где where id_sotrudnika='1' групируя по name
Здесь данные не нормализованы, т.к. name однозначно зависит от ключа id_sot. В реальной ситуации будет скорее всего группировка по одной таблице, а потом соединение с другой таблицей.

А для представленных данных вообще никакая группировка не нужна:
Код:
select id, name, data, id_sot, dolg
from t1
where id_sot = 1
order by data desc
limit 1;
 

Vidmich

Новичок
Re: group by и много полей

SELECT max(data),fam,name,sotrudnik FROM t1 GROUP BY fam,name,sotrudnik,data
то не получается.потому-что уже надо групировать по всем полям.А я хочу только по fam
А нафик тут max(data) в полях и data в группировке? может это и есть твоя ошибка?!
 
Сверху