Jump to content
Sign in to follow this  
Tinyled

Прошу помощи в составлении запроса mysql

Recommended Posts

Добрый день, столкнулся с задачей, выборки данных из таблицы в бд

сама задача состоит в том что бы получить из таблицы записи сгруппированные по телефону (phone), но перед этим отсортированные по дате (datetime DESC), при этом с лимитом в 200 записей (LIMIT 0,200)

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

Или может быть я ошибаюсь, и конечную сортировку лучше делать на php?

пробовал запросом 

SELECT sends.* FROM (SELECT * FROM `oc_watsappchat_send` WHERE creator="" ORDER BY `id` DESC) as sends GROUP BY sends.phone ORDER BY `id` DESC LIMIT 0,200

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

Edited by Tinyled

Share this post


Link to post
Share on other sites

У вас дважды выполняется сортировка по id, а вы вроди собирались сортировать по дате
И вообще внутренний SELECT лишний, условие можно перенести во внешний SELECT 

Share this post


Link to post
Share on other sites
6 минут назад, shalan сказал:

У вас дважды выполняется сортировка по id, а вы вроди собирались сортировать по дате
И вообще внутренний SELECT лишний, условие можно перенести во внешний SELECT 

да, не то скопипастил по id тоже можно сортировать, поскольку новому сообщению присваивается новый id также поле id является AUTO_INCREMENT

сначала уперся в сортировку именно по дате, но потом понял что можно и по id

Edited by Tinyled

Share this post


Link to post
Share on other sites
7 минут назад, shalan сказал:

И вообще внутренний SELECT лишний, условие можно перенести во внешний SELECT 

пытался это сделать но к сожалению все попытки заканчивались ошибкой синтаксиса

Share this post


Link to post
Share on other sites
SELECT * FROM `oc_watsappchat_send` WHERE creator="" GROUP BY phone ORDER BY `id` DESC LIMIT 0,200

Так пробовали

Share this post


Link to post
Share on other sites

@Tinyled , раз, два. Учитесь (хотя бы на SO).

 

P.S. без подзапроса не обойтись.

Share this post


Link to post
Share on other sites
35 минут назад, shalan сказал:
SELECT * FROM `oc_watsappchat_send` WHERE creator="" GROUP BY phone ORDER BY `id` DESC LIMIT 0,200

Так пробовали

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

Share this post


Link to post
Share on other sites
25 минут назад, SooR сказал:

@Tinyled , раз, два. Учитесь (хотя бы на SO).

 

P.S. без подзапроса не обойтись.

 

уточните пожалуйста чем мой запрос отличается от тех что в предложенных вами ссылках?

Мой запрос работает, и работает так как необходимо, за исключением того что неудовлетворительное время на обработку запроса, при количестве записей в 2.6к  составляет 0.0738 секунд

Share this post


Link to post
Share on other sites

@Tinyled , сделайте по аналогии со вторым вариантом, должно ускорить ваш запрос.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By valauto
      После попытки сделать бэкап базы данных на локалхосте выскакивает ошибка, подскажите пожалуйста как исправить: Uncaught Exception: Error: Unknown column 'sort_order' in 'order clause'<br />Error No: 1054<br />SELECT * FROM `oc_event` WHERE `trigger` LIKE 'catalog/%' AND status = '1' ORDER BY `sort_order` ASC in C:\xampp\htdocs\valauto\upload-3033-rs3\system\library\db\mysqli.php:40 Stack trace: #0 C:\xampp\htdocs\valauto\upload-3033-rs3\system\library\db.php(45): DB\MySQLi->query('SELECT * FROM `...') #1 C:\xampp\htdocs\valauto\upload-3033-rs3\catalog\model\setting\event.php(4): DB->query('SELECT * FROM `...') #2 C:\xampp\htdocs\valauto\upload-3033-rs3\system\storage\modification\system\engine\loader.php(248): ModelSettingEvent->getEvents() #3 C:\xampp\htdocs\valauto\upload-3033-rs3\system\engine\proxy.php(47): Loader->{closure}(Array, Array) #4 C:\xampp\htdocs\valauto\upload-3033-rs3\catalog\controller\startup\event.php(7): Proxy->__call('getEvents', Array) #5 C:\xampp\htdocs\valauto\upload-3033-rs3\system\storage\modification\system\engine\action.php(79): ControllerStartupEvent->index() #6 C:\xampp\htdocs\valauto\up in C:\xampp\htdocs\valauto\upload-3033-rs3\system\library\db\mysqli.php on line 40
    • By karmirarev
      Всем привет! Есть проблема, бьюсь уже второй день... Ситуация следующая:
      Сайт помер (не работает админка и фронт), пообщавшись с заказчиком решили что проще новый сайт пилить, так же на opencart'е как и было. Но перенося базу данных через mysql, полным бекапом, падает в ошибку.
      Собственно вопрос, как перенести базу(только товары), так чтоб это работало. В принципе в качестве ответа приму даже просто перечисление таблиц к переносу. Выручайте братцы.SOS.
    • By Devap
      Добрый день!
       
      Нуждаюсь в помощи профессионалов!
       
      Задача:
      Есть много не структурированных или плохо структурированных товаров которые требуется импортировать на сайт.
       
      План:
      1) Структурировать данные
      2) Залить товары на сайт
       
      Проблема заключается в том что с ocStore/openCart не работал, да и с PHP впринципе.
      Хорошо знаю .NET C#, но городить CMS на нем глупая затея, по крайней мере пока!
      Исходя из этого решил написать импорт модуль на ASP.NET Core (C#) - Серверная технология на C#  (= . 
       
      Вопрос состоит в том как правильно добавить товары сразу в MySql (в какие таблицы, что с чем свзязать по какому ключу, какие поля required и т.д...) что бы они корректно отобразились в магазине?

      Понимаю что ответ на вопрос будет довольно большой (если вообще будет =) ) по этому прошу хотя бы ссылки или направление в какую сторону смотреть.
       
      Спасибо!
       
      P.S.
       
      ocStore 3.0.2.0
       
    • By MFSHOP
      Мне нужен хороший или отличный программист Opencart, со знанием Yii2. Цель - планомерный перенос нескольких сайтов с Yii2 на Opencart и дальнейшая их поддержка. Условия обсуждаются отдельно. Работа удалённая, оплата попроектная. Кому интересно, напишите мне в личку, пожалуйста.
       
      Требования, обязанности и условия прописаны ниже. Рассмотрю всех кандидатов. Указывайте цену за час работы, пожалуйста. Откликаться можно в телеграм @elizaveta_vasileva либо whatsapp/viber на номер 89821212982. Елизавета.
       
      Требуемый опыт работы: 1–3 года
      Полная занятость, удаленная работа
      Обязанности: Реализация утвержденной схемы взаимодействия систем
      "сайт cms - roistat - crm - 1c";
      Поддержка и разработка сайтов на OpenCart 2.3
      Перенос всех сайтов с Yii2 на единую платформу OpenCart 2.3
      Верстка контента
      Внедрение типовых модулей на сайт
      Доработка модулей, написание собственных по заказам службы маркетинга
      Обеспечение обмена данными сайта с другими системами (roistat, yandex, 1C)
      Разграничение прав пользователей, Обеспечение политики безопасности.
      Обучение пользователей возможностям системы.
      Установка обновлений программных компонентов
      Предоставление технической информации о размещенном контенте
      Визуализация рабочих схем, создание рабочих инструкций и регламентов
      Оптимизация расходов на ИТ
      Предложения по развитию ИТ для роста компании
      Требования: Высший уровень компетенции в области веб-программирования
      Понимание фреймворка Yii
      Знание фреймворка bootstrap Адаптивная верстка (HTML , CSS) по макетам (PSD) Базовый уровень работы с PHP включая ООП Умение разбираться и вносить изменения в существующий код (PHP, JS, CSS, HTML) Знание JavaScript Системы распределенного управления верcиями -GIT, базовый уровень с СУБД MySQL (приветствуется) Верстка под опенкарт 2.3 Умение работать с API (roistat, yandex, etc) Опыт работы в реальных проектах по поддержке сайтов на OpenCart, не менее 2-х лет
      Умение работать в команде и самостоятельно
      Орг. способности и умение координировать действия будут жирным плюсом
      Условия:
      Полностью "белая" заработная плата, официальное трудоустройство
      ЗП в зависимости от Ваших стартовых компетенций назначается индивидуально, от 40 до 60 т.р.
      Работа удалённо, из любой точки мира
      Просьба в отклике указывать уровень ЗП, на который рассчитываете.
    • By Seofisher
      Помогите разобраться с запросом getAttributes.
      $sql = "SELECT *, (SELECT agd.name FROM " . DB_PREFIX . "attribute_group_description agd WHERE agd.attribute_group_id = a.attribute_group_id AND agd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS attribute_group FROM " . DB_PREFIX . "attribute a LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id) WHERE ad.language_id = '" . (int)$this->config->get('config_language_id') . "'"; if (!empty($data['filter_attrib_group'])) { $sql .= " AND attribute_group LIKE '" . $this->db->escape($data['filter_attrib_group']) . "%'"; } Почему фильтр не работает по attribute_group ?
      Хочу понять как правильно тут обратится к колонке attribute_group

      Запрос переписать по другому могу что бы фильтр работал, а вот сделать фильтр как есть, не знаю...
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.