Запрос с условием

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

NoN

Постоялец
Регистрация
25 Ноя 2008
Сообщения
79
Реакции
33
Таблицы

t1
p_id | p_name
0 | bla0
1 | blbbla
3 | bla1

t2
c_id | c_p
1 | имя 1
2 | имя 2
3 | имя 3


делаю
select * from t1 join t2 ON (t1.p_id=t2.c_id or t1.p_id=0);

мне нужно что бы на выдаче было только 1 совпадение, если условие t1.p_id=t2.c_id не срабатывает то должно выполнятся t1.p_id=0

Как это реализовать?
 
Вот так попробуй

select * from t1 join t2 ON t1.p_id=t2.c_id
union
select * from t1 join t2 ON t1.p_id=0 where 0 in (select count(t1.p_id) from t1 join t2 ON t1.p_id=t2.c_id) ;
 
Код:
select t1.*, IFNULL(t2.c_p,t3.c_p) from t1 
left join t2 ON t1.p_id=t2.c_id
left join t3 ON t3.p_id=0 and t2.c_id is null
 
  • Нравится
Реакции: NoN
Код:
select t1.*, IFNULL(t2.c_p,t3.c_p) from t1 
left join t2 ON t1.p_id=t2.c_id
left join t3 ON t3.p_id=0 and t2.c_id is null

пишет:
Table 'test.t3' doesn't exist


собственно мой запрос...

Код:
SELECT *
FROM firms_comment  AS fcm
JOIN firms_rating AS fr ON fcm.fc_cat = fr.fr_cat OR fr.fr_cat =0
JOIN firms_cat AS fc ON fcm.fc_cat = fc.fc_id
WHERE fcm.fc_office ='$office_id'
 
пишет:
Table 'test.t3' doesn't exist

Как-то так
Код:
SELECT IFNULL(t1.fr_cat,t2.fr_cat)
FROM firms_comment  AS fcm
JOIN firms_cat AS fc ON fcm.fc_cat = fc.fc_id

LEFT JOIN firms_rating AS t1 ON fcm.fc_cat = t1.fr_cat 
LEFT JOIN firms_rating AS t2 ON t1.fr_cat = 0 AND t1.fr_cat IS NULL

WHERE fcm.fc_office ='$office_id'
 
  • Нравится
Реакции: NoN
Спасибо разобрался в итоге получился запрос

Код:
SELECT fcm. * , IFNULL( t1.fr_cat, t2.fr_cat ) , IFNULL( t1.fr_rating_1, t2.fr_rating_1 ) , IFNULL( t1.fr_rating_2, t2.fr_rating_2 ) , IFNULL( t1.fr_rating_3, t2.fr_rating_3 ) , IFNULL( t1.fr_rating_4, t2.fr_rating_4 ) 
FROM ws_firms_comment AS fcm
JOIN ws_firms_cat AS fc ON fcm.fc_cat = fc.fc_id
LEFT JOIN ws_firms_rating AS t1 ON fcm.fc_cat = t1.fr_cat
LEFT JOIN ws_firms_rating AS t2 ON t2.fr_cat =0
WHERE fcm.fc_office = '23'
LIMIT 0 , 30

в курсе ктонибудь как можно упростить конструкцию

Код:
IFNULL( t1.fr_cat, t2.fr_cat ) , IFNULL( t1.fr_rating_1, t2.fr_rating_1 ) , IFNULL( t1.fr_rating_2, t2.fr_rating_2 ) , IFNULL( t1.fr_rating_3, t2.fr_rating_3 ) , IFNULL( t1.fr_rating_4, t2.fr_rating_4 )
типа как t1.*
 
Не парься, она выглядит громоздко.
Но сервер не грузит.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху