Ошибка в запросе? - MySQL
Формулировка задачи:
Всем привет!
Вот запрос:
Так ругается:
"Conversion failed when converting the varchar value 'yes(' to data type int."
что ему не так и как изменить запрос?
select maker, iif(count(pcs.pc)>=1,'yes('&count(pcs.pc)&')' ,'no')
from Product left join (select count(*)as pc, model from pc group by model ) pcs on Product.model=pcs.model
left join (select count(*)as pc,model from laptop group by model ) laptops on Product.model=laptops.model
left join (select count(*)as pc,model from printer group by model ) printers on Product.model=printers.model
group by makerРешение задачи: «Ошибка в запросе?»
textual
Листинг программы
select maker,
(select case when count(pcs.pc)=0
then 'no' else 'yes('+rtrim(convert(char(20),COUNT( pcs.pc))) +')' end) as pc,
(select case when count(laptops.pc)=0
then 'no' else 'yes('+rtrim(convert(char(20),COUNT( laptops.pc))) +')' end) as laptop,
(select case when count(printers.pc)=0
then 'no' else 'yes('+rtrim(convert(char(20),COUNT( printers.pc))) +')' end) as printer
from Product left join (select count(*)as pc, model from pc group by model ) pcs on Product.model=pcs.model
left join (select count(*)as pc,model from laptop group by model ) laptops on Product.model=laptops.model
left join (select count(*)as pc,model from printer group by model ) printers on Product.model=printers.model
group by maker
Объяснение кода листинга программы
- В этом коде используется язык SQL для создания запроса к базе данных.
- Запрос выбирает четыре поля из таблицы
Product:makerи три поля, которые вычисляются на основе подзапросов. - Подзапросы считают количество записей в таблицах
pcs,laptopsиprinters, которые соответствуют каждой модели продукта. - Затем эти количества преобразуются в строки с использованием функции
convertи форматируются с использованием функцииrtrim. - В каждом из трех подзапросов проверяется, равна ли сумма записей нулю, и если да, то возвращается строка
no, в противном случае возвращается строкаyes(количество), гдеколичество— это соответствующее количество записей. - Основной запрос соединяет таблицы
Product,pcs,laptopsиprintersс помощью оператораleft join, чтобы получить количество записей для каждого типа продукта. - Затем результаты группируются по полю
maker.