Ошибка в запросе? - MySQL

Узнай цену своей работы

Формулировка задачи:

Всем привет! Вот запрос:
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
Так ругается: "Conversion failed when converting the varchar value 'yes(' to data type int." что ему не так и как изменить запрос?

Решение задачи: «Ошибка в запросе?»

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

Объяснение кода листинга программы

  1. В этом коде используется язык SQL для создания запроса к базе данных.
  2. Запрос выбирает четыре поля из таблицы Product: maker и три поля, которые вычисляются на основе подзапросов.
  3. Подзапросы считают количество записей в таблицах pcs, laptops и printers, которые соответствуют каждой модели продукта.
  4. Затем эти количества преобразуются в строки с использованием функции convert и форматируются с использованием функции rtrim.
  5. В каждом из трех подзапросов проверяется, равна ли сумма записей нулю, и если да, то возвращается строка no, в противном случае возвращается строка yes(количество), где количество — это соответствующее количество записей.
  6. Основной запрос соединяет таблицы Product, pcs, laptops и printers с помощью оператора left join, чтобы получить количество записей для каждого типа продукта.
  7. Затем результаты группируются по полю maker.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5