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




MySQL.RU - Webboard



Вернуться
Помогите с запросом (Руст) 06/01/2005 - 21:45:26
      Re: Помогите с запросом (BabyKiller) 06/01/2005 - 23:45:16

> Original message text:
> From: Руст - 06/01/2005 - 21:45:26
> Subject:Помогите с запросом
> -----------------
> имеется 2 таблицы:
> table1: number, time, duration;
> table2: code, town, cost;
> В table1 содержатся CDR (набранный номер, время звонка, продолжительность)
> В table2 содержатся код региона, название региона, стоимость
> Примеры данных:
> select number,duration from table table1 limit 3;
> ------------------------
> 70952563669 | 158 |
> ------------------------
> 73472568978 | 52 |
> ------------------------
> 73475265984 | 45 |
> ------------------------
>
> select code,town,cost from table2 limit 4
> ------------------------
> 7095 | Moscow | 2.5 |
> ------------------------
> 7347 | Bash | 3.5 |
> ------------------------
> 73472 | Ufa | 3.6 |
> ------------------------
> 734752| City | 3.9 |
> ------------------------
>
> Нужно выбрать данные из table1, причем из номера определить город или регион соответственно коду города/региона, далее умножить цену на продолжительность.
> Делаю такой запрос:
> SELECT number,t2.town from table1 as t1, table2 as t2 where t1.number REGEXP (t2.code)
> Результат:
> ------------------------
> 70952563669 | Moscow |
> ------------------------
> 73472568978 | Bash |
> ------------------------
> 73472568978 | Ufa |
> ------------------------
> 73475265984 | Bash |
> ------------------------
> 73475265984 | City |
> ------------------------
> т.е. получается двойной результат, согласно regexp, а нужен только один, критерием которого будет максимальное совпадение кода города.
> Какие есть предложения, советы?
> Прошу ногами не бить, т.к. SQL занимаюсь около 2-х недель
>


From: BabyKiller - 06/01/2005 - 23:45:16
Subject:Помогите с запросом
-----------------
Во первых у тебя запрос неправилен не только в том что двойной результат выдаётся, а в том что если вдруг телефон окажется таким: 73472997095, то выведется ещё и город Москва. Поэтому более правильным будет запрос вида:
SELECT number,t2.town from table1 as t1, table2 as t2 where t1.number REGEXP (^t2.code)

А чтоб она выводила наиболее глубокие коды, то я вот что написал, не знаю работоспособна ли она, но что то типа такого должно быть (сильно не пинай может чуть больше двух недель с MySQL знаком :)
SELECT number,t2.town,MAX(t2.code) as code from table1 as t1, table2 as t2 where t1.number REGEXP (^t2.code) GROUP BY number

Кстати кто мне поможет с моим запросом, он идет вдругом топике под имененем: "Оптимизация запросов в PHP+MySQL"


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

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

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



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