Общие > Базы данных
Сложности с запросом
(1/1)
Nickolaz:
Есть такие таблички:
--- Код: ---orders
Id
name
status
Id
s_name
s_ord
status_order
Id
o_id
s_id
--- Конец кода ---
в табличке status_order - связь двух других таблиц "многие ко многим".
В s_ord - порядок следования статусов.
Надо выбрать за один запрос все name, а также один связанный статус, причем максимальный по s_ord.
что-то я запутался мыслями (
html_coder:
СУБД какая?
Nickolaz:
mysql
Nickolaz:
версия - 4.0, поэтому вложенные запросы не работают :(
Решение нашел через временную таблицу + добавление к ней индекса
--- Код: ---create temporary table temp_tab
select os.o_id,max(oss.s_ord) as mx
from status oss,status_order os
where os.st_id=oss.Id
group by os.o_id;
alter table temp_tab add index(o_id);
select o.Id,oss.s_name
from orders o
left join temp_tab h on h.o_id=o.Id
left join status oss on oss.s_ord=h.mx
group by o.Id;
drop table if exists temp_tab;
--- Конец кода ---
Хотелось бы это решить за один единственный запрос, если это возможно. Если нет - хочу просто в этом удостовериться, чтоб мастер какой-нибудь сказал "Это сделать нельзя" :)
К тому же в данном случае поле порядка - s_ord - должно быть уникальным. На практике это соблюдается, но хотелось бы, чтобы запрос работал и с дублирующимися значениями порядка.
Навигация
Перейти к полной версии