Есть две mysql таблицы rates и cdr, которые содержат поля
rates
prefix | cost
8495 | 15
81049 | 20
8104950 | 22
cdr
date | src | dst
2009-05-17 22:10 | 960096 | 84957392222
Задача, при заполнение таблицы cdr нужно сделать вывод статистики в таком виде
Дата | Источник | Направление | Описание | Стоимость
Вот никак, не могу понять, как совместить данные с обоих таблиц. Буду благодарен за пример решения.
Спустя 3 минуты, 7 секунд (17.05.2009 - 19:16) Kuliev написал(а):
Я что то не увидел связи между таблицами!
Спустя 8 минут, 21 секунда (17.05.2009 - 19:24) @Fetch написал(а):
А как делается связь?
У меня связь в полях rate.prefix и cdr.dst
т.е. по префиксу определяется цена.
У меня связь в полях rate.prefix и cdr.dst
т.е. по префиксу определяется цена.
Спустя 2 минуты, 26 секунд (17.05.2009 - 19:26) Kuliev написал(а):
Цитата (@Fetch @ 17.05.2009 - 21:24) |
А как делается связь? |
По ключам либо по индексам!
Спустя 3 минуты, 18 секунд (17.05.2009 - 19:30) waldicom написал(а):
`rates` LEFT JOIN на `cdr` по полям `prefix` и `dst`
Спустя 11 минут, 24 секунды (17.05.2009 - 19:41) @Fetch написал(а):
Не так всё просто значение полей prefix и dst не идентичны
есть cdr.dst='84957392222' нужно по нему выйти на rate.prefix='8495'
есть cdr.dst='84957392222' нужно по нему выйти на rate.prefix='8495'
Спустя 2 минуты, 54 секунды (17.05.2009 - 19:44) waldicom написал(а):
Ну может стоило описать это сразу? Или задача была:"а догадайтесь-ка дяденьки, шо мне надо"?
Спустя 6 минут, 20 секунд (17.05.2009 - 19:50) @Fetch написал(а):
Ну, теперь вы всё знаете, что нибудь можете подсказать?
Спустя 6 минут, 57 секунд (17.05.2009 - 19:57) waldicom написал(а):
Можно попробовать.
Написать процедуру, которая посимвольно ищет совпадения для dst (т.е. берет первую цифру, ищет по ней в таблице `rates`. Не нашла. Берем два символа. Не нашли. Берем три символа и так далее) и при нахождении выбирает эту строку их `rates`
Написать процедуру, которая посимвольно ищет совпадения для dst (т.е. берет первую цифру, ищет по ней в таблице `rates`. Не нашла. Берем два символа. Не нашли. Берем три символа и так далее) и при нахождении выбирает эту строку их `rates`
Спустя 2 часа, 51 минута, 2 секунды (17.05.2009 - 22:48) sergeiss написал(а):
Поля prefix и dst цифровые или символьные? Для символьных всё будет очень просто, можно использовать LIKE в условии, в том самом указанном выше LEFT JOIN.
Спустя 44 минуты, 33 секунды (17.05.2009 - 23:33) Alchemist написал(а):
LIKE использовать конечно можно, но вот телефон 8104950121212 посчитается два раза, для:
Цитата |
81049 | 20 |
и
Цитата |
8104950 | 22 |
Спустя 22 часа, 7 минут, 7 секунд (18.05.2009 - 21:40) @Fetch написал(а):
Спасибо всем. Задача решена.
PHP |
$result = mysql_query("SELECT * FROM ".$billing_cdr." WHERE calldate LIKE '$today%' ORDER By id DESC LIMIT ".$go.$_GET[go].", ".$default) or die (mysql_error()); |