- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева

Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть две таблицы:
t1: id, min_price, max_price
t2: id, price
Нужно заполнить поля min_price и max_price таблицы 1 минимальным и максимальным значением поля price второй таблицы.
Пока придумал только двумя запросами: для min и max:
Возможно ли это сделать одним запросом? Ну, то есть, понятно, что можно сделать 2 вложенных запроса, но это так же долго, как и эти 2 по очереди. Хочется делать только 1 select min(price), max(price) from t2
http://stackoverflow.com/questions/4254567/selecting-the-max-and-min-records-in-one-mysql-command
C select'ом пробем нет. Проблема с update. Я могу достать 2 поля одним запросом, но как их скормить update'у?
update поддерживает join-ы. делаете подзапросом и обедняете с обновляемой таблицы. Хотя, имхо, не вижу здесь причины так сильно извращаться в одном запросе.
izbushka-izbushka, а чего Ваш update без id работает? Он ведь все строки обновит.
ivan-lev, не факт что нужно обновить какой-то конкретный id, а не все записи в таблице. При этом там видимо есть какая-то связь с первой таблицы %t1%_id
что нужно обновить какой-то конкретный id, а не все записи в таблице.
Убрать where - дёрнет все..
При этом там видимо есть какая-то связь с первой таблицы %t1%_id
Ну, формально приведённая структура и пример запроса расходятся:
t1: id, min_price, max_price
update t1 set min_price=(select min(price) from t2 where id=t1.item_id)
Поэтому, думаю, ТС разберётся, как предложенный вариант испоьзовать..
Я лишь на всякий случай уточнил, действительно ли его запрос отрабатывает корректно... (иначе нафиг тогда id в t1?)
Убрать where - дёрнет все..
Сначала мне тоже показалось, что запросы бессмысленные, но.. предположим такую структуру таблицы
t1
-------
id | min| max
-------
1
2
3
-------
t2
-------
id | t1_id | price
-------
1 | 1
2 | 1
3 | 2
4 | 2
-------
тогда запрос update t1 set min_price=(select min(price) from t2 where id=t1.item_id)
имеет право на жизнь.
и, имхо
SELECT MIN(price), MAX(price), t1_id FROM t2 GROUP BY t1_id
ТС-у бы конечно следовало бы привести нормальную структуру таблиц
Сначала мне тоже показалось, что запросы бессмысленные, но.. предположим такую структуру таблицы
я про WHERE в своём запросе
update поддерживает join-ы
но не поддерживает group by.
Структура такая:
t1
-----------------
id | min | max
-----------------
1 2 4
2 2 5
3 1 6
t2
-----------------
id | price
-----------------
1 2
1 4
1 3
2 4
2 5
-----------------
id в таблицах - общее
При этом мой запрос
update t1 set max_price=(select max(price) from t2 where id=t1.id)
Делает ровно то, что надо, но только для поля max (и min отдельно) благодаря выделенному фрагменту (каждую строку по id, а не все строки, ivan-lev)
UPD: да, прошу прощения, там опечатка была (правильно красным)
Делает ровно то, что надо, но только для поля max (и min отдельно) благодаря выделенному фрагменту
Судя по структуре, в таблице t1 нет поля item_id, тем не менее в запросе оно указано и верно отрабатывает.. Магия? Или всё же?