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

Форум MySQL

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

 

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

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

тема: Не могу сделать правильную выборку - LEFT OUTER JOIN
 
 автор: nikolai   (13.01.2012 в 00:31)   письмо автору
 
 

Здравствуйте,
Помогите, пожалуйста, настроить запрос!
Есть две таблицы:
1) cms_obj
id, parent_id
1, 0
2, 0
3, 1
4, 3
5, 2

2) cms_obj_title
obj_id, lng, title
1, rus, Главная
2, eng, Forum
3, rus, Новости
3, eng, News
5, rus, Контакты

Нужно вытащить все значения из таблицы cms_obj и этим значениям присвоить содержимое из поля title (из таблицы cms_obj_title) где оно lng = rus
при условии, что таких значений может и не быть в таблице!!



SELECT id,parent_id,lng,title FROM `cms_obj` ob LEFT OUTER JOIN `cms_obj_title` ob_t ON (ob.id = ob_t.obj_id)

При таком запросе все вытаскивает правильно, и если нет title то пишет там NULL
Но вытаскивает он и rus, и eng, мне надо только rus



SELECT id,parent_id,lng,title FROM `cms_obj` ob LEFT OUTER JOIN `cms_obj_title` ob_t ON (ob.id = ob_t.obj_id) WHERE ob_t.lng='rus'

При таком запросе объединяет и удаляет те которые NULL а они мне тоже нужны


SELECT id,parent_id,lng,title FROM `cms_obj` ob LEFT OUTER JOIN `cms_obj_title` ob_t ON (ob.id = ob_t.obj_id) WHERE ob_t.lng='rus' OR ob_t.lng=NULL

тоже не то

Заранее благодарю за помощь!

  Ответить  
 
 автор: cheops   (13.01.2012 в 11:22)   письмо автору
 
   для: nikolai   (13.01.2012 в 00:31)
 

Если вместо LEFT OUTER JOIN использовать LEFT JOIN ситуация не меняется?

  Ответить  
 
 автор: nikolai   (13.01.2012 в 14:38)   письмо автору
 
   для: cheops   (13.01.2012 в 11:22)
 

все также как и с outer

  Ответить  
 
 автор: nikolai   (14.01.2012 в 01:15)   письмо автору
 
   для: cheops   (13.01.2012 в 11:22)
 

Может какието другие варианты есть?
а то не хочется делать 2 запроса и программно сводить все это дело.

  Ответить  
 
 автор: nikolai   (14.01.2012 в 22:29)   письмо автору
 
   для: nikolai   (13.01.2012 в 00:31)
 

Решение найдено, все логично и просто :)
SELECT id,parent_id,lng,title FROM `cms_obj` ob LEFT OUTER JOIN `cms_obj_title` ob_t ON (ob.id = ob_t.obj_id) AND (ob_t.lng='rus')

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

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