chincharovpc
@chincharovpc

Как правильно оформить запрос к БД?

Нужно проверить, присутствует ли в другой таблице запись со значением call_list.num, если да, то записать это значение, иначе значение из другого поля. Таких проверок будет 5 в одном запросе.

Ошибка в IF(src_count... - Unable to resolve column 'src_count'
Как решить эту проблему или как правильно записать такие условия?

SELECT id,
       (SELECT COUNT(*) from devices where devices.name = call_list.num) "src_count",
       IF(src_count = 0, call_list.num, call_list.num2)  "client_num",
FROM call_list;
  • Вопрос задан
  • 102 просмотра
Решения вопроса 2
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
SELECT DISTINCT
	id,
	coalesce(devices.name, call_list.num2)  "client_num",
FROM call_list
left join devices ON devices.name = call_list.num;
Ответ написан
Комментировать
igordance
@igordance
Прочтите про функцию coalesce() - которая проверяет несколько условий и возвращает первый не null результат, если я правильно понял ваше условие coalesce будет хорошим выбором
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
iMedved2009
@iMedved2009
Не люблю людей
SELECT id,
       IF((SELECT COUNT(*) from devices where devices.name = call_list.num) = 0, call_list.num, call_list.num2)  "client_num",
FROM call_list;


select 
  call_list.id, 
  t.count 
from call_list 
join (select count(*) as count, devices.name from devices group by devices.name) as t 
on t.name = call_list.num;


но это решение не факт что лучше чем subquery. надо смотреть по explain
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
call_list.num) AS "src_count"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы