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

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

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

Всем привет! Вот запрос:
Листинг программы
  1. select maker, iif(count(pcs.pc)>=1,'yes('&count(pcs.pc)&')' ,'no')
  2. from Product left join (select count(*)as pc, model from pc group by model ) pcs on Product.model=pcs.model
  3. left join (select count(*)as pc,model from laptop group by model ) laptops on Product.model=laptops.model
  4. left join (select count(*)as pc,model from printer group by model ) printers on Product.model=printers.model
  5. group by maker
Так ругается: "Conversion failed when converting the varchar value 'yes(' to data type int." что ему не так и как изменить запрос?

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

textual
Листинг программы
  1. select maker,
  2. (select case when count(pcs.pc)=0
  3.     then 'no' else 'yes('+rtrim(convert(char(20),COUNT( pcs.pc))) +')' end) as pc,
  4. (select case when count(laptops.pc)=0
  5.     then 'no' else 'yes('+rtrim(convert(char(20),COUNT( laptops.pc))) +')' end) as laptop,
  6. (select case when count(printers.pc)=0
  7.     then 'no' else 'yes('+rtrim(convert(char(20),COUNT( printers.pc))) +')' end) as printer
  8.  from Product left join (select count(*)as pc, model from pc  group by model ) pcs on Product.model=pcs.model
  9.  left join (select count(*)as pc,model from laptop  group by model ) laptops on Product.model=laptops.model
  10.  left join (select count(*)as pc,model from printer  group by model ) printers on Product.model=printers.model
  11. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут