[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Mysql условие
nike90
Здравствуйте. Мне нужна Ваша помощь с составлением SQL запроса.

Есть 2 таблицы Product и Name, в таблице Product хранятся продукты из параметрами, а в Name название продукта на разных языках.

1. Product
- product_id (int)
- price (int)

2. Name
- name_id (int)
- product_id (int)
- lang_id (int)
- value (varchar)

Особенности:
Если названия для продукта к примеру на Английском нет, и в таблице Name записи нет, там хранятся только названия которые есть.

Задача:
SELECT 
p.product_id,
n.lang_id,
n.value
FROM
product as p,
name as n
WHERE
n.product_id = p.product_id
n.lang_id = 3

Я выбираю все продукты одним запросом с названиями на языке с id 3 (русский), НО нужно сделать проверку если нет названия продукта на русском языке (id 3) то выбираем название по умолчанию это id 1 (англ.)

Как это сделать одним запросом? Я думаю, что можно как то это сделать через MySQL IF ELSE.

Заранее спасибо.
Arh
Никогда не работал с условиями в mysql, потому что мне кажется, что если до этого дошло, значит проблема в архитектуре.
Почему бы не сделать это на пхп?
$lang_id = !empty($row['lang_id']) ? $row['lang_id'] : $row['default_lang_id'];


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Kusss
Запрашиваем нужный язык и дефолтовый
SELECT 
p.`product_id`,
IF(n3.`lang_id` != '', n3.`value`, n1.`value`) AS `value`
FROM
`product` as p
LEFT JOIN
`name` as n3 ON n3.`product_id` = p.`product_id` AND n3.`lang_id` = 3
LEFT JOIN
`name` as n1 ON n1.`product_id` = p.`product_id` AND n1.`lang_id` = 1
nike90
Спасибо Kusss, это как раз то, что мне нужно
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.