Поиск с использованием between - MySQL

Узнай цену своей работы

Формулировка задачи:

День добрый! Собственно вопрос: хочу вывести имена-номера всех тех, кто звонил в определенный квартал (например январь 01 по апрель 04) Но при попытке вывести мне выдает 70+к записей (а в сумме у меня записей лишь 6,5к в calls и 31 users) собственно в чем может быть проблема ? А то как-то повис Запрос делал ~такой:
SELECT name, call_time
FROM 'calls'
WHERE call_time BETWEEN 
2012-01-01 00:00:00
AND
2012-04-30 00:00:00
Дату записываю как год-месяц-день-время(часы,минуты,секунды) Структура таблиц у меня такая: (calls и users соответственно) и вот прикреплю данные для заполнения табличек: my_calls.zip

Решение задачи: «Поиск с использованием between»

textual
Листинг программы
SELECT u.*, COUNT(c.id) AS `count_calls`, c.call_time FROM `users` u
JOIN `calls` c ON c.id_user = u.id
WHERE c.call_time BETWEEN DATE('2012-01-01') AND DATE('2012-04-01')
GROUP BY u.id

Объяснение кода листинга программы

В этом коде выполняется запрос к базе данных с использованием SQL-оператора SELECT. В результате выполнения запроса получаем следующие данные:

  1. Имя пользователя (users.name)
  2. Фамилия пользователя (users.surname)
  3. Количество звонков (count_calls)
  4. Время звонка (calls.call_time) Для получения этих данных происходит следующее:
  5. Используется оператор JOIN для объединения таблиц users и calls по полю id_user.
  6. В WHERE-клозе устанавливается условие, что время звонка (calls.call_time) должно быть больше или равно 2012-01-01 и меньше или равно 2012-04-01.
  7. В GROUP BY указывается, что результат запроса должен быть сгруппирован по id пользователя (users.id).
  8. Используется функция DATE() для преобразования времени звонка в формат даты.
  9. Используется функция COUNT() для подсчета количества звонков для каждого пользователя.
  10. Используется оператор AS для присвоения псевдонима count_calls результирующему полю с количеством звонков.
  11. Используется оператор ON для указания условия объединения таблиц.
  12. Используется оператор FROM для указания таблиц, которые участвуют в запросе. Полученные данные будут отсортированы по id пользователя (users.id) в порядке возрастания.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5