metrpro

Помогите составить mysql-запрос

Recommended Posts

Прошу помочь.

Есть у нас такой параметр таблицы data, который называется room_count - в нем мы отображаем количество комнат в объекте недвижимости.

Прошу помочь составить mysql-запрос для phpmyadmin следующей логики:

- база metrpro3_sitebill

- таблица re_data

- если значение topic_id отличается от 23 - 27, 13 - 17, то значение room_count для этой строки присваивается пустое

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

писать скрипт, сам запрос выборки например так  :

SELECT `topic_id` FROM `re_data` WHERE `topic_id` NOT IN ( 23,24,25,26,27 ) AND `topic_id` NOT IN ( 13,14,15,16,17 )

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

одним запросом:

  UPDATE  `re_data` SET `room_count` = '0'  ;
  SELECT `topic_id` 
  FROM `re_data` 
  WHERE `topic_id` NOT IN ( 23,24,25,26,27 ) 
  AND `topic_id` NOT IN ( 13,14,15,16,17 );

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, XTRO сказал:

одним запросом:


  UPDATE  `re_data` SET `room_count` = '0'  ;
  SELECT `topic_id` 
  FROM `re_data` 
  WHERE `topic_id` NOT IN ( 23,24,25,26,27 ) 
  AND `topic_id` NOT IN ( 13,14,15,16,17 );


 

1 вопрос ----а таким же запросом к примеру можно всем пользователя к примеру присвоить либо одну группу, либо один тариф, либо какой то признак? либо какую ту сумму баланса нарисовать?

2вопрос а таким же запросом можно тоже самое сделать что написано в 1 вопросе? только исключая например некоторых пользователей по ID, или по определенным группа (скорее всего тоже придется использовать ID)

3) вопрос можно ли таким же способом присвоить объявлениям размещенным за какой то определенный месяц занести данные определенные
пример таков
есть объявления занесенные в 1январе в 2феврале 3марте 4апреле 5мае
так вот задав определенный параметр выборки присвоить к примеру объявлениям занесенным в январе в определенное поле значени 1, февральским соответственно 2
и таким образом потом удалить все объявления махом просто подставив определенное значение от 1 до 12
к примеру на носу сентябрь -зачем нам объявления размещенные в январе
выполняем таков алгоритм удаления
берем базу -перебираем объявления где в поле "DATA_razmehenia" (ранее созданная в DATA) стоит 1 найдя данный признак -удаляем объявление
таким образом все скопом у нас можно будет удалить все объявления размещенные в январе
кстати эта подсказка разработчикам
так как к примеру как ручками то удалить 1000-2000 объявлений?

спасибо за ответы
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

9 часов назад, doma сказал:

так как к примеру как ручками то удалить 1000-2000 объявлений?

если имеется ввиду в PMA "ручками" - очистить данные таблицы  (меню Операции)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, XTRO сказал:

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

если имеется ввиду в PMA "ручками" - очистить данные таблицы  (меню Операции)

может бы не правильно выразились - может не правиль нас поняли, 
речь была не про удаление все таблицы, а именно некоторых записей в ней, соответсвующих определенному присвоенному значению,
например у нас в дата есть поле "PARSING" 'это поле присваеивается всем объявлениям спарсенным
спустя какое то время эти объявления естественно становятся не актуалными и их как то надо удалить
для этого к примеру делаем запрос и пишем примерно так
открываем базу, перебираем записи в ней, если в каком то объявление в поле PARSING стоит значение 1 то данную всю запись удаляем

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, doma сказал:

открываем базу, перебираем записи в ней, если в каком то объявление в поле PARSING стоит значение 1 то данную всю запись удаляем

только в PMA этого не сделать, если нужно - смотрите в сторону курсоров и циклов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, XTRO сказал:

только в PMA этого не сделать, если нужно - смотрите в сторону курсоров и циклов.

что за курсоры и что за циклы ? :) мы не знакомы с этим
если вы на счет цикла
цикл i=1 до i=10
удалить запись
конец цикла
то именно так и предлагалось удалять записи старых объявлений
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 07.05.2016 в 15:31, doma сказал:

может бы не правильно выразились - может не правиль нас поняли, 
речь была не про удаление все таблицы, а именно некоторых записей в ней, соответсвующих определенному присвоенному значению,
например у нас в дата есть поле "PARSING" 'это поле присваеивается всем объявлениям спарсенным
спустя какое то время эти объявления естественно становятся не актуалными и их как то надо удалить
для этого к примеру делаем запрос и пишем примерно так
открываем базу, перебираем записи в ней, если в каком то объявление в поле PARSING стоит значение 1 то данную всю запись удаляем

 

delete from re_data where parsing=1

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 10.05.2016 в 07:28, rumantic сказал:

delete from re_data where parsing=1

 

Быстро и просто, но никогда так не делаем! ))) Не будем забывать, что к объектам-объявлениям еще привязаны разные посторонние объекты, как те же картинки. Поэтому таким образом можно удалять записи либо на "голых"объявлениях, либо как часть процесса зачистки всего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, abushyk сказал:

Быстро и просто, но никогда так не делаем! ))) Не будем забывать, что к объектам-объявлениям еще привязаны разные посторонние объекты, как те же картинки. Поэтому таким образом можно удалять записи либо на "голых"объявлениях, либо как часть процесса зачистки всего.

зачистки всего это как понимать?

к примеру у нас есть 10тыс объяков из них 4тыс спарсенных и время по ним вышло нужно их удалить
как же правильно тогда сделать?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, TopRaN сказал:

Используем скрипт и cron.

понимаем что нужно -что то написать какой то алгоритм и запустить его через крон-так называемый менеджер задач
чтобы например не тормозить базу можно разделить на 4 этапа - по 2500 записей к примеру? то есть выполнилось 2500 записей -перерыв, спустя 5минут перерыва опять крон запуститься -еще 2500записей и так 4 раза?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

функция удаления, нормального с детскими объектами, одной записи, или некоторого набора записей есть. она используется когда вы с админки галочками натыкиваете нужные и жмете удалить выбранные. все упирается в что-то что будет определять этот набор удаляемых, грубо говоря  некоторая "форма поиска".

Разбивать на шаги удаление можно, но не из-за количества записей, из data они вытрутся моментально, а из-за того, что вместе с записью будет идти удаление картинок (физических файлов).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, abushyk сказал:

функция удаления, нормального с детскими объектами, одной записи, или некоторого набора записей есть. она используется когда вы с админки галочками натыкиваете нужные и жмете удалить выбранные. все упирается в что-то что будет определять этот набор удаляемых, грубо говоря  некоторая "форма поиска".

Разбивать на шаги удаление можно, но не из-за количества записей, из data они вытрутся моментально, а из-за того, что вместе с записью будет идти удаление картинок (физических файлов).

физически более видимо трудоемкий процесс так как к примеру объявлений может быть всего 10шт а фоток к ним 2000?  правильно понимаем? и фактически процесс удаления 1 записи может к примеру занять 2-5минут так как к 1записи будут удалены например 50фоток
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Цитата

и фактически процесс удаления 1 записи может к примеру занять 2-5минут так как к 1записи будут удалены например 50фоток

не настолько жутко кончно, но удаление большого количества файлов естественно будет более трудозатратным по сравнению с удалением самой записи. + накладные расходы, так как для uploadify нужно вычитать из БД записи соотв. линкам на файлы для картинок и оичстить записи в связанных таблицах, а в uploads кусок времени уйдет на распаковку блока информации о картинках, той страшной строки, которая выгружается в Эксель, если выгрузить поле картинок. точных цифр никто не скажет, но на минуты для записи там счет точно не идет, до секунды - это самый страшный предел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
22 минуты назад, doma сказал:

физически более видимо трудоемкий процесс так как к примеру объявлений может быть всего 10шт а фоток к ним 2000?  правильно понимаем?

да

22 минуты назад, doma сказал:

и фактически процесс удаления 1 записи может к примеру занять 2-5минут так как к 1записи будут удалены например 50фоток

намного меньше

8 минут назад, abushyk сказал:

и оичстить записи в связанных таблицах,

исходя из сабжа топикстартера - а) в PMA - трудно, б) из-за myisam - только ручками, а значит можно накосячить.
имхо , при любых раскладах - делать что-то руками в PMA - только для коротких операций без логики, любые другие задачи - выносить в скрипт, котрый можно отдебажить и работу и логику.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

трудно оперировать знаниями и диалогом  со знающими людьми :))  вот еще бы примеры на будущее выпрашивать -чтобы понимать как потом формировать обращения, так как не зная или плохо понимая или что то не учитывая, трудно обратиться правильно о конкретном действии.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

дык, примеров может "мильон" и все будут никому не нужными, поскольку все нужные для работы запросы уже есть в исходном коде и они в открытом доступе. а решение рождается от поставленной для решения конкретной задачи  (но не для инструментов работы, т.к. не только PMA существует)
ну, а , для расширения кругозора посмотреть общие примеры можно на оф_сайте  ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 04.05.2016 в 19:41, metrpro сказал:

Есть у нас такой параметр таблицы data, который называется room_count - в нем мы отображаем количество комнат в объекте недвижимости.

Прошу помочь составить mysql-запрос для phpmyadmin следующей логики:

- база metrpro3_sitebill

- таблица re_data

- если значение topic_id отличается от 23 - 27, 13 - 17, то значение room_count для этой строки присваивается пустое

Константин, а помогите мне все-таки правильный запрос составить. Мне тут предложили, не можете его проверить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UPDATE re_data SET `room_count`='' WHERE `topic_id` NOT IN ( 23,24,25,26,27,13,14,15,16,17 );

Либо, если тип колонки room_count в БД  INT (целое), то 

UPDATE re_data SET `room_count`=0 WHERE `topic_id` NOT IN ( 23,24,25,26,27,13,14,15,16,17 );

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас