Помогите с запросом, подключение таблиц без данных.

Тема в разделе "Базы данных", создана пользователем NoN, 17 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. NoN

    NoN Постоялец

    Регистр.:
    25 ноя 2008
    Сообщения:
    79
    Симпатии:
    33
    есть запрос

    Код:
    SELECT * 
    FROM ws_firms_company AS fc, ws_firms_office_group AS fog, ws_firms_office AS fo, ws_db_city_street AS dcs, ws_db_city AS dc
    WHERE fog.fog_cat = '65'
    AND fog.fog_office = fo.fo_id
    AND fo.fo_company = fc.fc_id
    AND dcs.dcs_id = fo.fo_address_street
    AND dcs.dcs_city = dc.dc_id
    ORDER BY fc.fc_id
    LIMIT 0 , 30
    
    но суть в том что в главной таблице ws_firms_office в поле fo_address_street может быть пустое, и тогда в итоге эта фирма не выводится так как в таблице "ws_db_city_street" dcs.dcs_id нет такого значения тоесть условие "AND dcs.dcs_id = fo.fo_address_street" не срабатывает...

    Так вопрос как составить запрос что бы если нет занчения в AND dcs.dcs_id, там было NULL

    Спасибо.
     
  2. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Почитай про LEFT JOIN.

    Код:
    SELECT * 
    FROM ws_firms_company AS fc, ws_firms_office_group AS fog, 
     ws_firms_office AS fo 
    LEFT JOIN ws_db_city_street AS dcs ON dcs.dcs_id = fo.fo_address_street
    LEFT JOIN ws_db_city AS dc ON dcs.dcs_city = dc.dc_id
    WHERE fog.fog_cat = '65'
    AND fog.fog_office = fo.fo_id
    AND fo.fo_company = fc.fc_id
    ORDER BY fc.fc_id
    LIMIT 0 , 30
    
     
    NoN нравится это.
Статус темы:
Закрыта.