У меня возникли проблемы с пониманием кода ошибки. Я хватаю имя клиента из таблиц клиентов, тогда я хочу захватить cid, где ставка из таблицы веток, затем я пытаюсь сгруппировать branch_services.sid и services.sid по ставке в таблице branch_services поэтому я могу найти, что клиенты в таблице сервисов имеют плату за услуги больше 2000.
select cname from clients where cid in
(select cid from branches where bid in (select branches_services.sid, services.sid
from branches_services, services
where branches_services.sid=services.sid group by bid having sum(sfee) >= 2000));
ОШИБКА 1241 (21000): Операнд должен содержать 1 столбец (ов)
Один из ваших подзапросов возвращает два столбца, но вы используете только одно значение, чтобы проверить, найдено ли оно в паре возвращаемых значений. Вот:
....bid in (select branches_services.sid, services.sid
from branches_services, services ...
Таким образом, при условии, что таблица branches_services имеет bid
столбца, запрос должен быть:
select cname from clients
where cid in
(select cid from branches
where bid in
(select branches_services.bid from branches_services join services
on branches_services.sid=services.sid
group by bid
having sum(sfee)>=2000));
select cname from clients where cid in (select cid from branches where bid in (select branches_services.bid from branches_services, services where branches_services.sid = services.sid group by bid having sum(sfee) >= 2000));
Это работает также @cdaiga