
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.02.2005, 17:38
|
|||
|---|---|---|---|
|
|||
Помогите с выборкой (связный подзапрос) |
|||
|
#18+
есть табличка calls - статистика дзвонков мини-атс: mysql> describe calls; +-------------+-------------+------+-----+---------------------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------------------+-------+ | date | datetime | | | 0000-00-00 00:00:00 | | | duration | int(11) | | | 0 | | | type | tinyint(4) | | | 0 | | | source | varchar(15) | | | | | | destination | varchar(15) | | | | | +-------------+-------------+------+-----+---------------------+-------+ mysql> SELECT * FROM calls LIMIT 10; +---------------------+----------+------+------------+-------------+ | date | duration | type | source | destination | +---------------------+----------+------+------------+-------------+ | 2005-01-01 19:09:26 | 114 | 3 | 0333390009 | 252183 | | 2005-01-01 20:36:10 | 41 | 3 | 0333390011 | 80677505374 | | 2005-01-02 20:01:10 | 549 | 3 | 0333390003 | 430194 | | 2005-01-02 22:55:03 | 772 | 3 | 0333390008 | 267727 | | 2005-01-03 07:31:32 | 16 | 3 | 0333390008 | 235415 | | 2005-01-03 11:14:02 | 178 | 3 | 0333390009 | 283701 | | 2005-01-03 11:17:35 | 13 | 3 | 0333390009 | 235415 | | 2005-01-03 11:19:19 | 21 | 3 | 0333390009 | 004 | | 2005-01-03 11:21:30 | 7 | 3 | 0333390009 | 283721 | | 2005-01-03 11:22:00 | 66 | 3 | 0333390009 | 283701 | +---------------------+----------+------+------------+-------------+ если дзвонки осуществляются на городские номера, то в destination будет просто городской номер абонента. Если же дзвонок на мобилу или межгород, то в destination пишется номер в формате: 8 + <код города, страны или оператора сотов. связи> + <номер абонента> ШАс что б подсчитать межгород и мобилы делаю выборки для каждого номера_абонента (те которые в source) и по каждому коду_оператора_или_города: SELECT source, SUM(duration) FROM `calls` WHERE source LIKE 'номер_абонента_1' AND destination LIKE '8код_оператора_или_города%' или SELECT source, SUM(duration) FROM `calls` WHERE source LIKE '0333%' AND destination LIKE '8код_оператора_или_города%' GROUP BY source Коди городов и операторов известны! поместил все коды в табличку pr_mobile mysql> describe pr_mobile; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | name | varchar(10) | | | | | | prefix | varchar(5) | | | | | +--------+-------------+------+-----+---------+-------+ mysql> SELECT * FROM pr_mobile; +--------+--------+ | name | prefix | +--------+--------+ | опер_1 | код_1 | | опер_2 | код_2 | | опер_3 | код_3 | | опер_4 | код_4 | +--------+--------+ ВОПРОС: Как сделать так что б одним запросом прощитать дзвонки на каждое значения pr_mobile.prefix отдельно??? Я так понимаю должно быть что то типа: SELECT * FROM calls WHERE destination LIKE '(SELECT prefix FROM pr_mobile)%' Даный запрос не робочий.. это так ход мыслей... с MySQL недавно дружу так что прошу не копать сразу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2005, 07:55
|
|||
|---|---|---|---|
|
|||
Помогите с выборкой (связный подзапрос) |
|||
|
#18+
_Sandr_ ВОПРОС: Как сделать так что б одним запросом прощитать дзвонки на каждое значения pr_mobile.prefix отдельно??? Я так понимаю должно быть что то типа: SELECT * FROM calls WHERE destination LIKE '(SELECT prefix FROM pr_mobile)%' Даный запрос не робочий.. Добавляем в таблицу pr_mobile строчку с полем prefix='local', тогда сгруппировать по префиксам можно будет следующим запросом. Здесь 7 - количество цифр в номере местного телефона. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2005, 23:20
|
|||
|---|---|---|---|
|
|||
Помогите с выборкой (связный подзапрос) |
|||
|
#18+
Welly _Sandr_ ВОПРОС: Как сделать так что б одним запросом прощитать дзвонки на каждое значения pr_mobile.prefix отдельно??? Я так понимаю должно быть что то типа: SELECT * FROM calls WHERE destination LIKE '(SELECT prefix FROM pr_mobile)%' Даный запрос не робочий.. Добавляем в таблицу pr_mobile строчку с полем prefix='local', тогда сгруппировать по префиксам можно будет следующим запросом. Здесь 7 - количество цифр в номере местного телефона. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Спасибо огромнейшее!!! столько намучался с этим.... походу спрошу еще кое-чего... А можно ли сделать, так что б это все просчитывалось еще и по каждому номеру отдельно, а не по всем сразу??? То есть, скажем, если сделать еще табличку numbers и вынести туда все номера, которые используются, а потом по каждому из них считать вот эту штуку (кто сколько наговорил). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.02.2005, 13:35
|
|||
|---|---|---|---|
|
|||
Помогите с выборкой (связный подзапрос) |
|||
|
#18+
_Sandr_походу спрошу еще кое-чего... А можно ли сделать, так что б это все просчитывалось еще и по каждому номеру отдельно, а не по всем сразу??? То есть, скажем, если сделать еще табличку numbers и вынести туда все номера, которые используются, а потом по каждому из них считать вот эту штуку (кто сколько наговорил). GROUP BY по номеру телефона ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.02.2005, 12:53
|
|||
|---|---|---|---|
|
|||
Помогите с выборкой (связный подзапрос) |
|||
|
#18+
Welly _Sandr_походу спрошу еще кое-чего... А можно ли сделать, так что б это все просчитывалось еще и по каждому номеру отдельно, а не по всем сразу??? То есть, скажем, если сделать еще табличку numbers и вынести туда все номера, которые используются, а потом по каждому из них считать вот эту штуку (кто сколько наговорил). GROUP BY по номеру телефона Ну GROUP BY я то могу сделать, когда все розговори считаю... а я имел в виду как к этому запросу пристроить шоб он все номера просчитал. SELECT pr_mobile.prefix, sum(calls.duration) FROM calls, pr_mobile WHERE case when length(calls.destination)=7 then 'local' when length(calls.destination)>7 then left(calls.destination,length(pr_mobile.prefix)) end = pr_mobile.prefix group by pr_mobile.prefix GROUP BY по номеру телефона здесь уже не прикрутишь??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.02.2005, 13:09
|
|||
|---|---|---|---|
|
|||
Помогите с выборкой (связный подзапрос) |
|||
|
#18+
_Sandr_Ну GROUP BY я то могу сделать, когда все розговори считаю... А чего тогда не хватает? а я имел в виду как к этому запросу пристроить шоб он все номера просчитал. А зачем, если это можно сделать и без него? И под "просчитал" что подразумевается? Количество звонков, суммарное время по каждому номеру или что? GROUP BY по номеру телефона здесь уже не прикрутишь??? Why not? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.02.2005, 17:55
|
|||
|---|---|---|---|
|
|||
Помогите с выборкой (связный подзапрос) |
|||
|
#18+
Welly _Sandr_Ну GROUP BY я то могу сделать, когда все розговори считаю... А чего тогда не хватает? а я имел в виду как к этому запросу пристроить шоб он все номера просчитал. А зачем, если это можно сделать и без него? И под "просчитал" что подразумевается? Количество звонков, суммарное время по каждому номеру или что? GROUP BY по номеру телефона здесь уже не прикрутишь??? Why not? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Правильно незачем :) там не по destination а по source надо. Я могу сделать так : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. но таких 'номер телефона' есть несколько.. как автоматом по каждому сделать предыдущий запрос?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.02.2005, 10:16
|
|||
|---|---|---|---|
|
|||
Помогите с выборкой (связный подзапрос) |
|||
|
#18+
_Sandr_Правильно незачем :) там не по destination а по source надо. Гм, а в замене destination на source есть какие-то проблемы? Если надо строго по нескольким телефонам, то сделать можно так: 1. использовать в where: calls.source in ('num1','num2'...), 2. создать таблицу нужных номеров и сджойнить с исходным запросом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1854311]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
191ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 519ms |

| 0 / 0 |
