как заставить group by возвращать первое значение, а не последнее

milanochebros

Новичок
как заставить group by возвращать первое значение, а не последнее

Уважаемые господа, очень нужен ответ на следующий вопрос - обыскался уже :

есть следующая таблица с билетами

TICKETS
id | data | id_event | id_place | sector | quantity | price | hide

связанная соответственно с таблицами событий и мест проведения

EVENTS
id | event | description

и

PLACES
id | place | city


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


вот мой запрос

SELECT tickets.data, events.event, places.place, places.city
FROM tickets, events, places
WHERE tickets.id_event = events.id AND tickets.id_place = places.id AND tickets.data > CURDATE() AND tickets.hide = 0
GROUP BY tickets.id_event
ORDER BY tickets.data

в итоге мы имеем список уникальных событий, но GROUP BY возвращает последнюю дату из одинаковых событий, а не первую ! (

Буду очень благодарен конструктивным ответам ...
 

zerkms

TDD infected
Команда форума
вопрос задаётся с периодичностью раз в месяц минимум (почти в каждом таком треде я именно так и комментирую - ищи)
 

milanochebros

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

zerkms

TDD infected
Команда форума
мде... лень поискать уже для решения своей же проблемы

внутрениий запрос выбирает + группирует из таблы событий и ищет минимальные (получаешь пару id_event + data), внешний - по полученным id_event+data прибивает джоином всё оставшееся
 

milanochebros

Новичок
господа, я прошу вас написать на примере как это происходит, так как джоинами я не пользуюсь ... помогите - очень нужно .!
 

zerkms

TDD infected
Команда форума
milanochebros
готовых решений здесь не дают.
хочешь готовое и за деньги - есть соответствующий раздел.
 

milanochebros

Новичок
по моему мнению это не сложно - написать 2 строки из которых я пойму что происходит ... , нет лучше написать 10 со ссылкой на мою некомпетентность и "нежелание" что либо искать ... ищу уже 2 дня .. сообщите куда деньги переводить ...

за теорию правда спасибо!

c уважением
Роман
 

zerkms

TDD infected
Команда форума
много чего несложно сделать.
но у форума есть гласные и негласные правила.
здесь учат работать и программировать.
даже если это 1 строчка - выгоднее тебя научить, чтобы в следующий раз ты не задавал подобный вопрос, а сделал сам.
те, кого это устраивает, продолжают здесь общаться и учиться, кого нет - уходят на форуме, где живут подачками.
 

milanochebros

Новичок
спасибо, за по истине родительское воспитание уму разуму ))) просто на примере проще понять, понимаешь ..

ничего доказывать не буду, просто если есть кто либо знает как это сделать конкретно, а не теоретически - пусть на примере других таблиц.. а так поглумиться над чужим незнанием, да поучать всех кто не знает тонкостей .. каждый может ...

-~{}~ 19.01.09 03:00:

"готовых Решееений здесь не дают" ... вопрос о Group By является сегодня на Руси "готовым решением " )) ну извините - не здержался ....
 

zerkms

TDD infected
Команда форума
"на примере"...
я объяснил достаточно подробно - начинай пробовать и публиковать попытки сюда, чтобы было видно, что ты хотя бы палец о палец ударил. покажи, что ты заинтересован в решении проблемы, но у тебя не получается.
 

DiMA

php.spb.ru
Команда форума
SELECT min(tickets.data) data, ...

Либо вариант по склеиванию доп. текстовой строки и доп. сортировке - в мане, черным по беллому.
 

zerkms

TDD infected
Команда форума
DiMA
и дальше что? :) ну min, а остальные поля будут взяты у произвольной записи.
 

DiMA

php.spb.ru
Команда форума
ты читать умеешь? Я же написал: создать в селекте скливанием новую строку (и напихать туда дату+все нужные полня) и сортировки по ней, который ОПИСАН В МАНЕ (но не рекомендуется из-за неэффективности), это можно легко сделать. В конкретном случае хз че надо - только дата или вся строка.
 

milanochebros

Новичок
Автор оригинала: DiMA
SELECT min(tickets.data) data, ...

Либо вариант по склеиванию доп. текстовой строки и доп. сортировке - в мане, черным по беллому.
Дима, огромное человеческое спасибо - SELECT min(tickets.data) data как раз и выводит ближайшие даты в группировке!! Всё работает. Спасибо !
 
Сверху