|
|
|
Обучение на sql-ex.ru
|
|||
|---|---|---|---|
|
#18+
Салют. делаю 14 задачу, условие такое: Краткая информация о базе данных "Компьютерная фирма": Схема БД состоит из четырех таблиц: 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. Задание: 14 Для таблицы Product получить результирующий набор в виде таблицы со столбцами maker, pc, laptop и printer, в которой для каждого производителя требуется указать, производит он (yes) или нет (no) соответствующий тип продукции. В первом случае (yes) указать в скобках без пробела количество имеющихся в наличии (т.е. находящихся в таблицах PC, Laptop и Printer) различных по номерам моделей соответствующего типа. Отвечаю: SELECT a.maker, REPLACE(('yes('+REPLACE((SELECT COUNT(DISTINCT b.model) FROM product c JOIN pc b ON b.model=c.model WHERE c.maker=a.maker), '0', 'no')+')'), 'yes(no)', 'no') pc, REPLACE(('yes('+REPLACE((SELECT COUNT(DISTINCT b.model) FROM product c JOIN laptop b ON b.model=c.model WHERE c.maker=a.maker), '0', 'no')+')'), 'yes(no)', 'no') laptop1, REPLACE(('yes('+REPLACE((SELECT COUNT(DISTINCT b.model) FROM product c JOIN printer b ON b.model=c.model WHERE c.maker=a.maker), '0', 'no')+')'), 'yes(no)', 'no') printer1 FROM product a GROUP BY maker Пишет: Неверно. Ваш запрос вернул правильные данные на основной базе, но не прошел тест на проверочной базе. * Несовпадение данных (2) Уже пол часа долблюсь на задаче, не могу понять почему не проходит на проверочной базе. Подскажите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2009, 02:02:45 |
|
||
|
Обучение на sql-ex.ru
|
|||
|---|---|---|---|
|
#18+
Пол часа - это еще мало. Думайте еще. open your mind ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 11:54:33 |
|
||
|
Обучение на sql-ex.ru
|
|||
|---|---|---|---|
|
#18+
Сделай CASE со связанными подзапросами. Те, CASE на наличие продукции. В THEN пишем связанный подзапрос на подсчет количества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2010, 12:25:31 |
|
||
|
Обучение на sql-ex.ru
|
|||
|---|---|---|---|
|
#18+
Решал-решал задачи на sql-ex. Прорешал все задачи первого этапа, кроме последней по DML, где надо избавиться от лишних повторяющихся пробелов между словами... В общем, бросил это занятие. Как-то заходил посмотреть на этот сайт, что там творится. Удручающая картина: много задач поменяли, так что то, что я уже решал - не зачёт, надо решать по новой. Да только у меня охоту отбивает то, что у них у всех учебных баз такая кривая структура... да и большинство задач из разряда нереальных... Это я так, мысли вслух ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 22:08:43 |
|
||
|
|

start [/forum/topic.php?fid=34&gotonew=1&tid=1550521]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
196ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 203ms |
| total: | 502ms |

| 0 / 0 |
