[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сложный SQL запрос
bayanruby
date         | timer  | timerIsOn
сегодня 2 0
сегодня 2 1
сегодня 1 0
вчера 3 0
вчера 3 0
послезавтра 4 0
послезавтра 4 0

как можно одним запросом вывести поле у которого timerIsOn = 1
но надо ещё проверить, чтобы записи сгруппированные по date были sum(timer) <= 6

тоесть с текущей таблицой мне должно вывести
date         | timer | timerIsOn
сегодня 2 1
Oyeme
SELECT * FROM `table` where timerIsOn = 1
GROUP BY date
HAVING sum(timer) <= 6
bayanruby
окей, классно

а не подскажите как можно после выборки обновить timer?

UPDATE table
SET timer = 10000
WHERE timerIsOn = 1
GROUP BY date
HAVING sum(timer) <= 6

так не прокатило (
Oyeme
UPDATE table_data t
INNER JOIN (
SELECT id FROM table_data
WHERE timerIsOn = 1
GROUP BY date
HAVING sum(timer) <= 6
) y ON t.id = y.id

SET t.timer = 10000


У Вас должно быть поле индификатора в моем случаи это простое поле id
bayanruby
спс, а мой норм или так не красиво?


UPDATE table_data
SET timer = 10000
WHERE date IN
(
SELECT t.date FROM
(
SELECT date
FROM table_data
GROUP BY date
HAVING sum(timer) <=6
) AS t
) AND timerIsOn = 1
DedMorozzz
если редкий запрос, или не нагрузка низкая - более чем
Но этот запрос даёт относительно высокую нагрузку на сервер

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
bayanruby
получается пример Oyeme по производительности лучше, да?
Быстрый ответ:

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