Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Задачка (http://forum.oszone.net/showthread.php?t=115040)

ValVlaGen 22-08-2008 09:07 881051

Задачка
 
Схема БД состоит из четырех таблиц:
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.

Найти тех производителей ПК, все модели ПК которых имеются в таблице PC.

Какие будут предложения?

Busla 22-08-2008 11:48 881164

Это же азы TSQL

Решение данной и еще одной темы было удалено, т.к., помимо нарушений правил прохождения сертификации sql-ex.ru, это еще и неэтично - просить других сдать за вас сертификат... Учите матчасть, "специалисты", намного интереснее самому решить проблему, чем списать и не понять, в чем суть...

ValVlaGen 22-08-2008 12:35 881204

:ok: Большое спасибо за ответ

:help: А вот еще задачка:


Схема базы данных состоит из трех отношений:

utQ (Q_ID int,Q_NAME varchar(35))
utV (V_ID int,V_NAME varchar(35),V_COLOR char(1))
utB (B_Q_ID int,B_V_ID int,B_VOL tinyint, B_DATETIME datetime)


Таблица utQ содержит идентификатор и название квадрата, цвет которого первоначально черный.
Таблица utV содержит идентификатор, название и цвет баллончика с краской.
Таблица utB содержит информацию об окраске квадрата баллончиком: идентификатор квадрата, идентификатор баллончика, количество краски и время окраски.
При этом следует иметь в виду, что:
- баллончики с краской могут быть трех цветов - красный V_COLOR='R', зеленый V_COLOR='G', голубой V_COLOR='B' (латинские буквы).
- объем баллончика равен 255 и первоначально он полный;
- цвет квадрата определяется по правилу RGB, т.е. R=0,G=0,B=0 - черный, R=255, G=255, B=255 - белый;
- запись в таблице закрасок utB уменьшает количество краски в баллончике на величину B_VOL и соответственно увеличивает количество краски в квадрате на эту же величину;
- значение 0 < B_VOL <= 255
- Количество краски одного цвета в квадрате не превышает 255, а количество краски в баллончике не может быть меньше нуля.

Предполагая, что среди идентификаторов квадратов имеются пропуски, найти минимальный и максимальный "свободный" идентификатор в диапазоне между имеющимися максимальным и минимальным идентификаторами.
Если пропусков нет, выводить NULL.
Например, для последовательности идентификаторов квадратов 1,2,5,7 результат должен быть 3 и 6

Busla 22-08-2008 13:29 881244

По-моему, простого полноценного решения в один запрос здесь не изобрести.

ValVlaGen 22-08-2008 14:17 881275

Не не есть решение точно :buba: . Пока не знаю - сам думаю. Но как вымучаю - обязательно пропишу.

Busla 22-08-2008 14:48 881300

Пока приходит на ум только так:
  1. Извлечь min и max
  2. Создать временную таблицу с инкрементом от min до max
  3. Из соединения с изначальной получить все пропуски
  4. Из пропусков выбрать min и max
Только вот выводить NULL - получается отдельной подзадачей.

Да и ради двух чисел строить огромную временную таблицу - не эффективно.

Delirium 27-08-2008 02:15 884693

Цитата:

Цитата Busla
Только вот выводить NULL - получается отдельной подзадачей. »

Можно и сразу, типа такого:
Решение данной и еще одной темы было удалено, т.к., помимо нарушений правил прохождения сертификации sql-ex.ru, это еще и неэтично - просить других сдать за вас сертификат... Учите матчасть, "специалисты", намного интереснее самому решить проблему, чем списать и не понять, в чем суть...


Время: 07:51.

Время: 07:51.
© OSzone.net 2001-