По одной записи из каждого каталога

sokol

Zavolga.Net
По одной записи из каждого каталога

Есть отношение один ко многим
Нужно вывести по одной последней записи из каждого каталога.
Не могу придумать ничего подходящего.
Есть варианты?
 

ForJest

- свежая кровь
1. использовать id_cat, MAX(field) GROUP BY id_cat
2. с помощью полученных пар значений извлечь из таблицы записи.
field - определяет у тебя критерий "последнести" - дата, номер или ещё что.
 

.des.

Поставил пиво кому надо ;-)
при такой постановке задачи только через телепат_мод

скорее всего только через временную таблицу:
[sql]
CREATE TEMPORARY TABLE tmp
(KEY(catalog_id), KEY(date_catalog))
SELECT catalog_id, MAX(date_catalog) date_catalog
FROM catalogs
GROUP BY catalog_id;

SELECT *
FROM records
JOIN tmp ON records.catalog_id=tmp.catalog_id
JOIN catalogs ON tmp.catalog_id=catalogs.catalog_id AND tmp.date_catalog=catalogs.date_catalog
[/sql]

И демиург прав в таблицах нет последних записей.

-~{}~ 15.09.04 02:23:

ForJest :D тоже телепат мод?​
 

sokol

Zavolga.Net
Demiurg Последняя заничит последняя добавленная, неважно по какому критерию это оценивать (дате, автоинкрементому полю и.т.д)

Извиняюсь, что забыл написать. телепат_мод сработал правильно:)

Решение ForJest вполне подходит. Спс.
 

.des.

Поставил пиво кому надо ;-)
Автор оригинала: Sir_J
Мoжно и без temporary table subselectom

Автор оригинала: .des.
при такой постановке задачи только через
...
скорее всего только через временную таблицу:
Очень сомневаюсь, что версия mysql >=4.1
 

Sir_J

Guest
:) ну каждому свое ....
я так месяца 3 назад на него перешел, вроде пока не глючил
[offtop]
.... на днях 5.0.1 alpha-snapshot поковырял глянул на обещанные
storage procedure and functions
[/offtop]
 

ForJest

- свежая кровь
.des.
Не - просто недавно сам такое е писал :) Только я сделал через временную таблицу, но это слишком сложно, ага, для начинающих :)
 
Сверху