singlepost

SQL запросы << На главную или назад  

ПОМОГИТЕ КТО МОЖЕТ. ГОЛОВУ ЛОМАЮ НАД ОДНИМ ПРОСТЫМ ЗАПРОСОМ:

Краткая информация о базе данных "Компьютерная фирма":

Схема БД состоит из четырех таблиц:
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 вывести все его характеристики (кроме кода) в два столбца:
- название характеристики (имя соответствующего столбца в таблице PC);
- значение характеристики

МОЙ ВАРИАНТ РЕШЕНИЯ (ГДЕ ОШИБКА???):
SELECT Характеристика, знач_характ
FROM
(SELECT CONVERT(varchar(25), model), CONVERT(varchar(25), speed), CONVERT(varchar(25), ram), CONVERT(varchar(25), hd), CONVERT(varchar(25), cd), CONVERT(varchar(25), price) FROM PC) p
UNPIVOT
(знач_характ FOR Характеристика IN(model, speed, ram, hd, cd, price)) AS unpvt

22 ответов в теме “SQL запросы”

  1. 4
    Михаил Семионенко ответил:

    Это задача с sql-ex.ru) Решай сам! Иначе свои знания никогда не появятся!

  2. 3
    Леонид Максимов ответил:

    вы бы хотя бы сказали текст ошибки и указали диалект SQL, который используете, etc. по умолчанию предполагается ошибка синтаксиса возле неизвестного слова UNPIVOT.

  3. 2
    Игорь Хрипунов ответил:

    И все же, где же эта ошибка?

    SELECT Характеристика, знач_характ
    FROM
    (SELECT CONVERT(varchar(25), model), CONVERT(varchar(25), speed), CONVERT(varchar(25), ram), CONVERT(varchar(25), hd), CONVERT(varchar(25), cd), CONVERT(varchar(25), price) FROM PC WHERE code = (SELECT MAX(code) FROM PC)) p
    UNPIVOT
    (знач_характ FOR Характеристика IN(model, speed, ram, hd, cd, price)) AS unpvt

  4. 1
    Леонид Максимов ответил:

    UNPIVOT не входит в стандарт SQL 92, и вы не можете рассчитывать на выполнение своего запроса там, где эта команда не реализована. да и условия на максимальность кода компьютера не видно.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.