Помогите с запросом. Он теряет данные

SOS
Дата: 04.12.2002 07:16:24
Написал я "супер" запрос
Есть у меня 2 таблицы payphones и talks (таксофоны и разговоры) и в них единое поле tax_number (номер таксофона с которого был разговор)
Мой запрос должен выбирать все разгоовры по каждому из таксофонов, что он собственно и делает, вот только если в talks.tax_number - NULL то эти записи игнорируются хотя должны присутствовать в выводе отдельной строкой
(строка с tax_number = NULL в таблице payphones есть)

Заранее благодарен за советы

Сам Запрос:

select payphones.tax_number, payphones.street, payphones.hourse,
SUM(CASE WHEN talks.take_money is NULL THEN 1 ELSE NULL END) as freecall,
SUM(CASE WHEN talks.take_money is NULL THEN talks.length_talk ELSE NULL END) as freecalltraff,
SUM(CASE WHEN talks.call_number like '8%' and talks.call_number not like '810%' THEN 1 ELSE NULL END) as rule1,
SUM(CASE WHEN talks.call_number like '810%' THEN 1 ELSE NULL END) as rule2,
SUM(CASE WHEN talks.call_number not like '8%' THEN 1 ELSE NULL END) as rule3,
SUM(CASE WHEN talks.call_number like '%' THEN 1 ELSE NULL END) as rule4,
SUM(CASE WHEN talks.call_number not like '8%' THEN CASE WHEN talks.build_code = '1' THEN take_money * 5 ELSE take_money END ELSE NULL END) as rule5,
SUM(CASE WHEN talks.call_number like '8%' and talks.call_number not like '810%' THEN CASE WHEN talks.build_code = '1' THEN take_money * 5 ELSE take_money END ELSE NULL END) as rule6,
SUM(CASE WHEN talks.call_number like '810%' THEN CASE WHEN talks.build_code = '1' THEN take_money * 5 ELSE take_money END ELSE NULL END) as rule7,
SUM ( CASE WHEN talks.build_code = '1' THEN take_money * 5 ELSE take_money END ) as rule8,
SUM(talks.length_talk) as alltime
from payphones
left join talks on payphones.tax_number = talks.tax_number
group by payphones.tax_number, payphones.street, payphones.hourse
guest2002
Дата: 04.12.2002 07:21:57
Если "строка с tax_number = NULL в таблице payphones есть", то зачем left join - можно просто равенство поставить.
guest2002
Дата: 04.12.2002 07:24:00
Еще - в равенстве isnull(p.tax_number, 0) = isnull(t.tax_number, 0).
Вместо 0 - любой код tax_number, которого реально нет в таблице.
SOS
Дата: 04.12.2002 09:39:33
Пытался вместо join использовать WHERE, но результат не тот.
Кстати создавать в payphones строку где payphones = NULL мне бы не хотелось.
Так как же мне быть с этим запросом ?
Есть мысли как вквести эти данные ???

Спасибо.
olegusan
Дата: 04.12.2002 09:46:05
Все от того, что любое сравнение с NULL дает FALSE

Т.е. в вашем случае NULL != NULL
guest2002
Дата: 04.12.2002 10:01:04
Нужно попробовать right join. По-моему тут именно он нужен.
Если таблицы большие - можно создать для примера тестовые с 1-2 строками и разобраться.
Тогда можно убрать из payphones строку где payphones = NULL.
SOS
Дата: 04.12.2002 11:32:58
Большое спасибо guest2002 и всем кто откликнулся. right join - было именно то, что нужно.

Спасибо.