Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
как совместить джойн и группировку (барабан) 04/09/2013 - 21:56:13
      Re: как совместить джойн и группировку (Akina) 04/09/2013 - 22:26:39
      Re: как совместить джойн и группировку (барабан) 05/09/2013 - 07:48:30
      Re: как совместить джойн и группировку (Akina) 05/09/2013 - 08:59:10
      Re: как совместить джойн и группировку (Akina) 05/09/2013 - 09:06:20
      Re: как совместить джойн и группировку (барабан) 05/09/2013 - 09:16:43
      Re: как совместить джойн и группировку (барабан) 05/09/2013 - 16:59:49
      Re: как совместить джойн и группировку (Akina) 05/09/2013 - 17:29:00
      Re: как совместить джойн и группировку (барабан) 05/09/2013 - 19:26:36
      Re: как совместить джойн и группировку (барабан) 05/09/2013 - 19:33:01
      Re: как совместить джойн и группировку (Akina) 05/09/2013 - 20:30:20
      Re: как совместить джойн и группировку (барабан) 05/09/2013 - 20:52:07
      Re: как совместить джойн и группировку (Akina) 05/09/2013 - 21:17:57
      Re: как совместить джойн и группировку (барабан) 05/09/2013 - 22:08:49
      Re: как совместить джойн и группировку (Akina) 06/09/2013 - 09:04:45
      Re: как совместить джойн и группировку (барабан) 06/09/2013 - 16:00:45
      Re: как совместить джойн и группировку (Akina) 06/09/2013 - 16:15:52
      Re: как совместить джойн и группировку (барабан) 06/09/2013 - 17:02:25
      Re: как совместить джойн и группировку (Akina) 06/09/2013 - 17:35:03
      Re: как совместить джойн и группировку (барабан) 06/09/2013 - 17:46:30
      Re: как совместить джойн и группировку (Akina) 06/09/2013 - 19:21:23
      Re: как совместить джойн и группировку (Akina) 06/09/2013 - 19:28:22
      Re: как совместить джойн и группировку (барабан) 06/09/2013 - 21:45:12
      Re: как совместить джойн и группировку (Akina) 06/09/2013 - 22:23:30
      Re: как совместить джойн и группировку (барабан) 06/09/2013 - 22:49:38
      Re: как совместить джойн и группировку (Akina) 07/09/2013 - 22:08:11
      Re: как совместить джойн и группировку (барабан) 08/09/2013 - 08:17:00
      Re: как совместить джойн и группировку (Akina) 08/09/2013 - 14:01:36
      Re: как совместить джойн и группировку (барабан) 08/09/2013 - 18:17:25
      Re: как совместить джойн и группировку (Akina) 08/09/2013 - 21:52:06
      Re: как совместить джойн и группировку (барабан) 09/09/2013 - 06:26:29
      Re: как совместить джойн и группировку (Akina) 09/09/2013 - 09:19:57
      Re: как совместить джойн и группировку (барабан) 09/09/2013 - 10:08:57
      Re: как совместить джойн и группировку (Akina) 09/09/2013 - 12:43:46
      Re: как совместить джойн и группировку (барабан) 09/09/2013 - 14:02:42
      Re: как совместить джойн и группировку (Akina) 09/09/2013 - 16:01:34
      Re: как совместить джойн и группировку (барабан) 09/09/2013 - 16:10:17
      Re: как совместить джойн и группировку (Akina) 09/09/2013 - 16:21:52
      Re: как совместить джойн и группировку (барабан) 09/09/2013 - 23:11:20
      Re: как совместить джойн и группировку (Akina) 10/09/2013 - 08:33:46
      Re: как совместить джойн и группировку (барабан) 10/09/2013 - 08:55:51

> Original message text:
> From: барабан - 04/09/2013 - 21:56:13
> Subject:как совместить джойн и группировку
> -----------------
>
> Приветствую, товарищи. Что-то ума у меня не хватает как это сделать.
> Раньше делал в несколько проходов: сохранял промежуточные результаты
> в виде таблицы и использовал ее в следующем запросе. Но то было на
> MS SQL, там можно сделать SELECT INTO TABLE, а в MYSQL нельзя. Да и
> другие причины есть. Уж с понедельника не могу осилить и сделтать
> работающий запрос. Что есть: две таблицы. Первая - список звонков
> сотрудников, вторая содержит коды городов и названия. Задача проста:
> подставить коды городов.
>
> таблицы
>
> calls:
> dst time
> -------------------------------
> 302299867 21
> 302299864 83
> 302289643 56
> 342289364 18
> 342209834 10
> 342298347 34
> 342290384 87
> 343239847 43
> 343277463 49
> 343243666 75
> 343349875 14
> 343375384 48
>
> dest
> code name
> -------------------------------
> 3 Russia
> 4 Russia
> ...
> 302 Russia Chita reg
> 342 Russia Perm reg
> 343 Russia Yekaterinburg reg
> 3022 Russia Chita
> 3422 Russia Perm
> 3432 Russia Yekaterinburg
> 3433 Russia Yekaterinburg
>
>
> на выходе надо получить что-то вроде
> code total name
> -------------------------------
> 3022 160 Russia Chita
> 3422 149 Russia Perm
> 3432 167 Russia Yekaterinburg
> 3433 62 Russia Yekaterinburg
>
> но сейчас у меня получается что-то вроде такого:
> code total name
> -------------------------------
> 3 160 Russia
> 302 149 Russia Chita reg
> 342 149 Russia Perm reg
> 343 62 Russia Yekaterinburg reg
> 3022 160 Russia Chita
> 3422 149 Russia Perm
> 3432 167 Russia Yekaterinburg
> 3433 62 Russia Yekaterinburg
>
> т.е. не выбирается по максимальной величине кода
>
> Запрос типа такой
> SELECT
> c.time,
> MAX(d.code) AS code,
> d.name
> FROM calls AS c
> LEFT JOIN dest AS d
> ON c.dst LIKE CONCAT(d.code,'%')
> GROUP BY code
>
> Будьте добры, наставьте на путь истиный, а то с джойнами у меня совсем туго
> Спасибо!
>
> PS: данные и запрос приближены к реальным
>


From: барабан - 06/09/2013 - 17:02:25
Subject:как совместить джойн и группировку
-----------------
>>А коли так - то с точки зрения сервера при выполнении запроса это одна таблица на 4к записей, а не две.

дело в том что у нас есть таблица со звонками и несколько прайс-листов, которые нужно сравнить. Но прайс-листы разные, т.е. там и коды разные (каких-то нет), и имена. Чтобы корректно сравнить приводим первоначальные данные к какому-то общему виду (в данном случае - к таблице dest), а уже по полученному виду считаем стоимость.

>>Иногда (жаль - редко), кстати, отлично помогает ускорить процесс.

Я был бы признателен за помощь. Решил задачу исходя из своего уровня понимания. Проблема в основном в том, что нужно выбрать префикс максимальной длинны. И он должен быть один. а для этого нужно отсортировать то что найдено по длине. И сделать LIMIT 1. Это можно сделать только в подзапросе как я понял. Я думал что есть другой способ, потому и написал сюда, ибо в гугле что-то примеров на эту тему маловато, либо я не так искал.

>>что ж вы сразу-то не сказали, что задачка одноразовая?

да, одноразовая. Но найти более эффективное решение не помешает: велико желание заколбасить новый отчет в систему. Сейчас в системе есть возможность тарификации, но цена вычисляется по каждому звонку, т.е. в отчетах используются цифры уже полученные из прайс-листов на момент звонка. Пересчитать с новыми ценами нет возможности. В общем-то и не нужно, но такой отчет позволит прикинуть стоимость с любым другим оператором. Другое дело что в данном конкретном случае я использовал уменьшенную и оптимизированную таблицу с направлениями, в ней только РФ. В оригинале там 30 тыс. строк с кодами для всего мира. Но и она упрощенная, например, одних только сотовых префиксов в нашей стране более 27 тысяч.

>>Даже если ТС описывает только ползадачи?

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


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
42865



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |