metrpro 42 Жалоба Опубликовано: May 5, 2016 Прошу помочь. Есть у нас такой параметр таблицы data, который называется room_count - в нем мы отображаем количество комнат в объекте недвижимости. Прошу помочь составить mysql-запрос для phpmyadmin следующей логики: - база metrpro3_sitebill - таблица re_data - если значение topic_id отличается от 23 - 27, 13 - 17, то значение room_count для этой строки присваивается пустое Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: May 5, 2016 писать скрипт, сам запрос выборки например так : 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 ) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
metrpro 42 Жалоба Опубликовано: May 6, 2016 Отлично, а дальше что? Мне нужна формулировка запроса в phpmyadmin Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: May 6, 2016 одним запросом: 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 ); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
doma 22 Жалоба Опубликовано: May 6, 2016 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 объявлений? спасибо за ответы Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: May 7, 2016 при работе напрямую с бд, можно делать что угодно, но имея ввиду, что тот же PMA имеет ограничения, нельзя работать с хранимыми процедурами и т.п. и как вы понимаете, в данном случае вся ответственность целостности данных лежит только на вас. 9 часов назад, doma сказал: так как к примеру как ручками то удалить 1000-2000 объявлений? если имеется ввиду в PMA "ручками" - очистить данные таблицы (меню Операции) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
doma 22 Жалоба Опубликовано: May 7, 2016 1 час назад, XTRO сказал: при работе напрямую с бд, можно делать что угодно, но имея ввиду, что тот же PMA имеет ограничения, нельзя работать с хранимыми процедурами и т.п. и как вы понимаете, в данном случае вся ответственность целостности данных лежит только на вас. если имеется ввиду в PMA "ручками" - очистить данные таблицы (меню Операции) может бы не правильно выразились - может не правиль нас поняли, речь была не про удаление все таблицы, а именно некоторых записей в ней, соответсвующих определенному присвоенному значению, например у нас в дата есть поле "PARSING" 'это поле присваеивается всем объявлениям спарсенным спустя какое то время эти объявления естественно становятся не актуалными и их как то надо удалить для этого к примеру делаем запрос и пишем примерно так открываем базу, перебираем записи в ней, если в каком то объявление в поле PARSING стоит значение 1 то данную всю запись удаляем Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: May 7, 2016 10 часов назад, doma сказал: открываем базу, перебираем записи в ней, если в каком то объявление в поле PARSING стоит значение 1 то данную всю запись удаляем только в PMA этого не сделать, если нужно - смотрите в сторону курсоров и циклов. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
doma 22 Жалоба Опубликовано: May 7, 2016 8 минут назад, XTRO сказал: только в PMA этого не сделать, если нужно - смотрите в сторону курсоров и циклов. что за курсоры и что за циклы ? мы не знакомы с этим если вы на счет цикла цикл i=1 до i=10 удалить запись конец цикла то именно так и предлагалось удалять записи старых объявлений Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: May 10, 2016 В 07.05.2016 в 15:31, doma сказал: может бы не правильно выразились - может не правиль нас поняли, речь была не про удаление все таблицы, а именно некоторых записей в ней, соответсвующих определенному присвоенному значению, например у нас в дата есть поле "PARSING" 'это поле присваеивается всем объявлениям спарсенным спустя какое то время эти объявления естественно становятся не актуалными и их как то надо удалить для этого к примеру делаем запрос и пишем примерно так открываем базу, перебираем записи в ней, если в каком то объявление в поле PARSING стоит значение 1 то данную всю запись удаляем delete from re_data where parsing=1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: May 13, 2016 В 10.05.2016 в 07:28, rumantic сказал: delete from re_data where parsing=1 Быстро и просто, но никогда так не делаем! ))) Не будем забывать, что к объектам-объявлениям еще привязаны разные посторонние объекты, как те же картинки. Поэтому таким образом можно удалять записи либо на "голых"объявлениях, либо как часть процесса зачистки всего. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
doma 22 Жалоба Опубликовано: May 13, 2016 2 часа назад, abushyk сказал: Быстро и просто, но никогда так не делаем! ))) Не будем забывать, что к объектам-объявлениям еще привязаны разные посторонние объекты, как те же картинки. Поэтому таким образом можно удалять записи либо на "голых"объявлениях, либо как часть процесса зачистки всего. зачистки всего это как понимать? к примеру у нас есть 10тыс объяков из них 4тыс спарсенных и время по ним вышло нужно их удалить как же правильно тогда сделать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TopRaN 235 Жалоба Опубликовано: May 13, 2016 Используем скрипт и cron. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
doma 22 Жалоба Опубликовано: May 13, 2016 3 минуты назад, TopRaN сказал: Используем скрипт и cron. понимаем что нужно -что то написать какой то алгоритм и запустить его через крон-так называемый менеджер задач чтобы например не тормозить базу можно разделить на 4 этапа - по 2500 записей к примеру? то есть выполнилось 2500 записей -перерыв, спустя 5минут перерыва опять крон запуститься -еще 2500записей и так 4 раза? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: May 13, 2016 функция удаления, нормального с детскими объектами, одной записи, или некоторого набора записей есть. она используется когда вы с админки галочками натыкиваете нужные и жмете удалить выбранные. все упирается в что-то что будет определять этот набор удаляемых, грубо говоря некоторая "форма поиска". Разбивать на шаги удаление можно, но не из-за количества записей, из data они вытрутся моментально, а из-за того, что вместе с записью будет идти удаление картинок (физических файлов). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
doma 22 Жалоба Опубликовано: May 13, 2016 1 минуту назад, abushyk сказал: функция удаления, нормального с детскими объектами, одной записи, или некоторого набора записей есть. она используется когда вы с админки галочками натыкиваете нужные и жмете удалить выбранные. все упирается в что-то что будет определять этот набор удаляемых, грубо говоря некоторая "форма поиска". Разбивать на шаги удаление можно, но не из-за количества записей, из data они вытрутся моментально, а из-за того, что вместе с записью будет идти удаление картинок (физических файлов). физически более видимо трудоемкий процесс так как к примеру объявлений может быть всего 10шт а фоток к ним 2000? правильно понимаем? и фактически процесс удаления 1 записи может к примеру занять 2-5минут так как к 1записи будут удалены например 50фоток Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: May 13, 2016 Цитата и фактически процесс удаления 1 записи может к примеру занять 2-5минут так как к 1записи будут удалены например 50фоток не настолько жутко кончно, но удаление большого количества файлов естественно будет более трудозатратным по сравнению с удалением самой записи. + накладные расходы, так как для uploadify нужно вычитать из БД записи соотв. линкам на файлы для картинок и оичстить записи в связанных таблицах, а в uploads кусок времени уйдет на распаковку блока информации о картинках, той страшной строки, которая выгружается в Эксель, если выгрузить поле картинок. точных цифр никто не скажет, но на минуты для записи там счет точно не идет, до секунды - это самый страшный предел. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: May 13, 2016 22 минуты назад, doma сказал: физически более видимо трудоемкий процесс так как к примеру объявлений может быть всего 10шт а фоток к ним 2000? правильно понимаем? да 22 минуты назад, doma сказал: и фактически процесс удаления 1 записи может к примеру занять 2-5минут так как к 1записи будут удалены например 50фоток намного меньше 8 минут назад, abushyk сказал: и оичстить записи в связанных таблицах, исходя из сабжа топикстартера - а) в PMA - трудно, б) из-за myisam - только ручками, а значит можно накосячить. имхо , при любых раскладах - делать что-то руками в PMA - только для коротких операций без логики, любые другие задачи - выносить в скрипт, котрый можно отдебажить и работу и логику. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
doma 22 Жалоба Опубликовано: May 13, 2016 трудно оперировать знаниями и диалогом со знающими людьми :)) вот еще бы примеры на будущее выпрашивать -чтобы понимать как потом формировать обращения, так как не зная или плохо понимая или что то не учитывая, трудно обратиться правильно о конкретном действии. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
XTRO 154 Жалоба Опубликовано: May 13, 2016 дык, примеров может "мильон" и все будут никому не нужными, поскольку все нужные для работы запросы уже есть в исходном коде и они в открытом доступе. а решение рождается от поставленной для решения конкретной задачи (но не для инструментов работы, т.к. не только PMA существует) ну, а , для расширения кругозора посмотреть общие примеры можно на оф_сайте )) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
metrpro 42 Жалоба Опубликовано: May 14, 2016 В 04.05.2016 в 19:41, metrpro сказал: Есть у нас такой параметр таблицы data, который называется room_count - в нем мы отображаем количество комнат в объекте недвижимости. Прошу помочь составить mysql-запрос для phpmyadmin следующей логики: - база metrpro3_sitebill - таблица re_data - если значение topic_id отличается от 23 - 27, 13 - 17, то значение room_count для этой строки присваивается пустое Константин, а помогите мне все-таки правильный запрос составить. Мне тут предложили, не можете его проверить? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: May 14, 2016 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 ); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах