Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Связь между таблами, если связь отсутствует, то вывести нулл
 
 автор: himic   (17.11.2008 в 11:37)   письмо автору
 
 

Есть запрос и связь между двумя таблами
SELECT c.*,g.cc FROM comm c,geoip g
where c.ip_num BETWEEN g.start AND g.end limit 10

Но в табле geoip может не быть диапазона для записи, из таблы comm

В оракле это решается очень просто
SELECT c.*,g.cc FROM comm c,geoip g
where c.ip_num BETWEEN g.start(+) AND g.end(+) limit 10

В результате в поле g.cc будет Нулл.

Сделал Джоином
SELECT c.*,g.cc FROM comm c
left join  geoip g on c.ip_num BETWEEN g.start AND g.end
where c.previd=3256

Всё работает, на ацки долго отрабатывает, может что не правильно или можно сделать по другому?

  Ответить  
 
 автор: cheops   (17.11.2008 в 11:41)   письмо автору
 
   для: himic   (17.11.2008 в 11:37)
 

Вообще в классическом SQL такие вещи через LEFT JOIN и решаются... У вас таблицы индексированы?

  Ответить  
 
 автор: himic   (17.11.2008 в 12:17)   письмо автору
 
   для: cheops   (17.11.2008 в 11:41)
 

Да индексированны, там где без джоин всё работает быстренько.
Могу сказать что табла geoip очень большая. Тыщь сто записей

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования