Помогите с ошибкой в sql запросе

Статус
В этой теме нельзя размещать новые ответы.

Monterpan

Постоялец
Регистрация
3 Мар 2008
Сообщения
150
Реакции
27
Требуется в зависимости от значения записи в таблице подключать разные таблицы.
Т.е. если table1.mattype = 'zav' сделать
JOIN `table2`
если table1.mattype = 'art' сделать
JOIN `table3`
Этот запрос по идее должен делать такое:
PHP:
SELECT `t1`.*, `t2`.* FROM `table1` AS `t1`
 LEFT JOIN  (CASE t1.mattype 
		WHEN 'zav' THEN `table2` 
		WHEN 'art' THEN `table3`
		ELSE NULL 
	END ) AS `t2` ON t1.matid = t2.id WHERE (t1.mattype <> '') LIMIT 5
но возникает ошибка:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE t1.mattype WHEN 'zav' THEN `table2` WHEN 'art' THEN `table3`' at line 3
 
Я не гуру в SQL и Может не правильно понял задачу, но что-то типа такого работать должно
PHP:
SELECT t1.*, 
  CASE 
   WHEN id =1 THEN (select value from ps where ps.id=t1.id)
   WHEN id =2 THEN (select value from ps2 where ps2.id=t1.id)
   ELSE (select 0 from ps3 where ps3.id=t1.id)
  END from ps_configuration t1
 
Я не гуру в SQL и Может не правильно понял задачу, но что-то типа такого работать должно
То что нужно. Спасибо.
Конечный запрос получился таким:
PHP:
SELECT `t1`.*, 
  CASE  
   WHEN `t1`.mattype ='zav' THEN (select id from `table2` as `t2` where `t1`.matid=`t2`.id) 
   WHEN `t1`.mattype ='art' THEN (select id from `table3` as `t2` where `t1`.matid=`t2`.id) 
   ELSE (select 0 ) 
  END FROM `table1` AS `t1`
WHERE (t1.mattype <> '') LIMIT 5
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху