Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор строки по минимальному значению столбца. 
V
    Опции темы
pms
Дата 24.8.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.2.2006

Репутация: нет
Всего: нет



MySQL сервер версион: 4.0.24_Дебиан.
Есть сложный запрос возвращающий таблицу. Назовем ее условно табле_А. Она имеет такой вид:

+---------+------------+--------+---------+-...-+-----------+
  ид           нумбер     поле1    поле2            полеN


Далее необходимо из етой таблицы выбрать ту строку, у которой наименьшее значение в столбце нумбер.
На текущий момент ето реализуецца следуыущим образом:

Код

SELECT *
FROM table_A
WHERE number =(
                                 SELECT MIN(number)
                                 FROM table_A 
                            )



Но так как запрос сложен, то конструкция эта приобретает грамоздкий вид:

Код

SELECT *
FROM `problem` pr
LEFT JOIN solution sl ON pr.ID=sl.ID_Problem AND sl.ID_Team=1
WHERE pr.ID_Game=(SELECT g.ID FROM game g where g.Date=CURDATE() )
AND sl.ID IS NULL

AND pr.number = 

(SELECT min(number) min_num
FROM `problem` pr
LEFT JOIN solution sl ON pr.ID=sl.ID_Problem AND sl.ID_Team=1
WHERE pr.ID_Game=(SELECT g.ID FROM game g where g.Date=CURDATE() )
AND sl.ID IS NULL)


Жирным выделена табле_А.

И что самое неприятное налицо дублирование кода запроса табле_А. Т.е. в случае внесения изменений в запрос табле_А их придется вручную вносить в обе части, где расположен запрос табле_А.

Есть ли способ 1)избегать такое дублирование кода и 2)сделать запрос более лаконичным и красивым?

Это сообщение отредактировал(а) pms - 30.8.2008, 19:47
PM MAIL   Вверх
skyboy
Дата 24.8.2008, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



если не затруднит, перепиши пост, отметив под смайлами(область со смайлами) пункт "транслит". прочиал ровно первый абзац. понять сложно.
PM MAIL   Вверх
pms
Дата 30.8.2008, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.2.2006

Репутация: нет
Всего: нет



Вот переделал.
А что ж мне никто не поможет-то? Или я не понятно обьясняю суть проблемы?
PM MAIL   Вверх
bars80080
Дата 30.8.2008, 20:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



а такую преобразовать не удастся?

Код

select * from table order by number desc limit 1

PM MAIL WWW   Вверх
pms
Дата 30.8.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.2.2006

Репутация: нет
Всего: нет



Цитата(bars80080 @ 30.8.2008,  20:14)
а такую преобразовать не удастся?

Код

select * from table order by number desc limit 1

Podhodit. Spasibo! Pojdu uchit' mysql.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0670 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.