[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрос mysql
Guest
Есть таблица товаров. И есть таблица цен товаров по разным месяцам. Надо найти все товары у которых минимальная цена больше заданной. Подскажите, пожалуйста. никак не могу написать запрос.



Спустя 11 минут, 5 секунд (12.10.2009 - 15:18) glock18 написал(а):
смотрим
SELECT - его части и синтаксис, конкретно - WHERE
MIN - для выбора минимального значения

Спустя 3 минуты, 56 секунд (12.10.2009 - 15:22) Guest написал(а):
glock18

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

Спустя 2 минуты, 13 секунд (12.10.2009 - 15:24) glock18 написал(а):
для этого есть WHERE

Спустя 2 минуты, 9 секунд (12.10.2009 - 15:26) Guest написал(а):
glock18

Логично, но что именно надо написать, чтобы запрос нашёл то что мне нужно.

Спустя 6 минут, 44 секунды (12.10.2009 - 15:33) glock18 написал(а):
чтобы я мог ответить на этот вопрос мне нужно знать что у вас за таблица.

для самостоятельного решения я вам уже предложил средства. осталось только почитать про них.

Спустя 2 минуты, 52 секунды (12.10.2009 - 15:36) Guest написал(а):
О, вроде сделал.
SQL
SELECT MIN(`tbl_rental`.`WeeklyRate`) AS `minimum`
FROM `tbl_model`,`tbl_rental` WHERE `tbl_model`.`show` = 1 AND `tbl_rental`.`model` = `tbl_model`.`id` AND `tbl_rental`.`WeeklyRate` > 1000 AND `tbl_rental`.`WeeklyRate`
IN(SELECT MIN(`tbl_rental`.`WeeklyRate`) AS `minimum`
FROM `tbl_model`,`tbl_rental` WHERE `tbl_model`.`show` = 1 AND `tbl_rental`.`model` = `tbl_model`.`id` AND `tbl_rental`.`WeeklyRate` > 0
GROUP BY `tbl_model`.`id`)
GROUP BY `tbl_model`.`id`

Спустя 3 минуты, 10 секунд (12.10.2009 - 15:39) SunSet написал(а):
Это печально.. такие запросы бабахать - копать яму своему сайту... blink.gif

Спустя 1 минута, 38 секунд (12.10.2009 - 15:41) Guest написал(а):
SunSet

А как по другому? Никак не могу придумать.

Спустя 17 минут, 11 секунд (12.10.2009 - 15:58) glock18 написал(а):
Не сказать, что запрос будет долго работать. Но зачем вложенный запрос почти полностью дублирующий внешний? опиши подробно, что ты хочешь получить им. у меня явное ощущение, что вложенный запрос ни к чему.

Спустя 4 минуты, 42 секунды (12.10.2009 - 16:02) Guest написал(а):
glock18

Во вложеном запросе я нахожу минимальные цены по моделям, а потом нахожу модели у которых есть цены, которы равны больше чем 1000 и проверяю являются ли они минимальными.

Спустя 6 минут, 34 секунды (12.10.2009 - 16:09) SunSet написал(а):
Guest
Когда вот вижу такие метровые запросы то сам по себе возникает вопрос о правильности организации всей базы и отдельных таблиц, что все что нужно - так разбито на части.

Спустя 3 минуты, 40 секунд (12.10.2009 - 16:13) glock18 написал(а):
а убрать его? думаю, без него результат будет тот же, зато логика проще.

оставь в where только это:
SQL
`tbl_model`.`show` = 1 AND `tbl_rental`.`model` = `tbl_model`.`id` AND `tbl_rental`.`WeeklyRate` > 1000


Спустя 2 минуты (12.10.2009 - 16:15) glock18 написал(а):
SunSet
это очень простой запрос, и до метра не более чем 90см не дотягивает smile.gif а вот с логикой у запроса проблема. то, что должно делаться один простым запросом, делается с вложенным, который, на мой взгляд, никакой существенной роли не сыграет.

На самом деле, запросы получаются тем сложнее, чем более "нормально" структурирована база данных smile.gif

Спустя 2 минуты, 24 секунды (12.10.2009 - 16:17) Guest написал(а):
glock18

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

Спустя 3 минуты, 19 секунд (12.10.2009 - 16:20) Guest написал(а):
SunSet

А как ещё можно разбить базу. Есть таблица моделей с соответственной информацией, и есть таблица цен по моделям в зависимости от месяца.

Спустя 36 секунд (12.10.2009 - 16:21) glock18 написал(а):
MIN(`tbl_rental`.`WeeklyRate`) > 1000

или

SQL
SELECT MIN(`tbl_rental`.`WeeklyRate`) AS `minimum`
FROM `tbl_model` JOIN `tbl_rental` ON `tbl_rental`.`model` = `tbl_model`.`id`
WHERE `tbl_model`.`show` = 1
GROUP BY `tbl_model`.`id`
HAVING `minimum` > 1000


Спустя 7 минут, 48 секунд (12.10.2009 - 16:29) Guest написал(а):
glock18

спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.