Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2010, 02:04   #1
lebrosha
Пользователь
 
Аватар для lebrosha
 
Регистрация: 21.05.2009
Сообщений: 36
По умолчанию запрос к БД

Есть БД:
Схема БД "Компьютерная фирма" состоит из четырех таблиц:
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, screen, price)
Printer(code, model, color, type, price)
Таблица Product представляет производителя (maker), номер модели (model) и тип ('PC' - ПК, 'Laptop' - ПК-блокнот или 'Printer' - принтер).
Предполагается, что номера моделей в таблице Product уникальны для всех производителей и типов продуктов.
В таблице PC для каждого ПК, однозначно определяемого уникальным кодом – code, указаны модель – model (внешний ключ к таблице Product), скорость - speed (процессора в мегагерцах), объем памяти - ram (в мегабайтах), размер диска - hd (в гигабайтах), скорость считывающего устройства - cd (например, '4x') и цена - price.
Таблица Laptop аналогична таблице РС за исключением того, что вместо скорости CD содержит размер экрана -screen (в дюймах).
В таблице Printer для каждой модели принтера указывается, является ли он цветным - color ('y', если цветной), тип принтера - type (лазерный – 'Laser', струйный – 'Jet' или матричный – 'Matrix') и цена - price.


Нужно сделать запрос:
Для таблицы Product получить результирующий набор в виде таблицы со
столбцами maker, pc, laptop и printer, в которой для каждого
производителя требуется указать количество имеющихся в наличии (т.е.
находящихся в таблицах PC, Laptop и Printer) различных по номерам
моделей изделий соответствующего типа. Либо, если производитель такой тип продукции не производит, вернуть NULL в соответствующей ячейке.


Объсните мне пожалуйста как тут чего делать, а то владею sql только на уровне простой выборки данных . Есть в sql такой оператор который может посчитать число строк удовлетворяющих определенному условию? И еще: как в результирующую таблицу занести это посчитаное число? заранее спасибо.
Найди цель, ресурсы найдутся.
lebrosha вне форума Ответить с цитированием
Старый 18.06.2010, 13:41   #2
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Возможно поможет..
Код:
select maker, sum(pc)
 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
ssdm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50
Запрос Инночка БД в Delphi 1 01.05.2008 23:46
Запрос Инночка БД в Delphi 2 23.04.2008 13:19