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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2016, 23:17   #1
LuDM
 
Регистрация: 11.05.2015
Сообщений: 5
По умолчанию Задача по SQL

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

Схема БД состоит из четырех таблиц:
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, price, screen)
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 со следующими характеристиками:
код: минимальный код блокнота в группе +20;
модель: номер модели блокнота +1000;
скорость: максимальная скорость блокнота в группе;
ram: максимальный объем ram блокнота в группе *2;
hd: максимальный объем hd блокнота в группе *2;
cd: cd c максимальной скоростью среди всех ПК;
цена: максимальная цена блокнота в группе, уменьшенная в 1,5 раза

Я написала следующее:

Код:
insert into pc (code, model, speed, ram, hd, cd, price)
select 
min(code)+20,
model+1000,
max(speed),
max(ram)*2,
max(hd)*2,
(select max(cd) from pc),
max(price)/1.5
from laptop
group by model
Данные этот запрос возвращает правильно, однако сам запрос не проходит по проверочной базе. Помогите разобраться, что я неправильно делаю

Последний раз редактировалось Alex11223; 13.04.2016 в 23:21.
LuDM вне форума Ответить с цитированием
Старый 14.04.2016, 08:00   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не проходит - это как?
Новый code - будет ли уникальным в pc?
Тип price конечно не известен? Может так прокатит: max(price)*2/3
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.04.2016, 11:16   #3
LuDM
 
Регистрация: 11.05.2015
Сообщений: 5
По умолчанию

не проходит это значит выдается вот такое сообщение:
Неверно.

Ваш запрос вернул правильные данные на основной базе, но не прошел тест на проверочной базе.
* Несовпадение данных (9)
цену попыталась вот так посчитать max(price)*2/3, но в итоге у двух записей в таблице вывелся неправильный результат
LuDM вне форума Ответить с цитированием
Старый 14.04.2016, 12:20   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Тип price нужно смотреть. От этого зависит как уменьшить в 1.5 раза и как округлить результат
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.04.2016, 12:26   #5
LuDM
 
Регистрация: 11.05.2015
Сообщений: 5
По умолчанию

price типа money
LuDM вне форума Ответить с цитированием
Старый 14.04.2016, 12:45   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Попробуй так ROUND(max(price)/1.5,2)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.04.2016, 13:11   #7
LuDM
 
Регистрация: 11.05.2015
Сообщений: 5
По умолчанию

Если использовать ROUND(max(price)/1.5,2) то как видно из рисунка два значения считаются не верно
Если же поменять на ROUND(max(price)/1.5,4 то опять возвращаемся к тому, что данные считаются верно но по проверочной базе запрос не проходит
Изображения
Тип файла: jpg zapros.JPG (97.5 Кб, 203 просмотров)
LuDM вне форума Ответить с цитированием
Старый 14.04.2016, 13:56   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Тоды не знаю. Это какой сайт и номер задания? Может вечерком гляну
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.04.2016, 14:02   #9
LuDM
 
Регистрация: 11.05.2015
Сообщений: 5
По умолчанию

Сайт http://sql-ex.ru/ а задание 11 в разделе DML
LuDM вне форума Ответить с цитированием
Старый 14.04.2016, 19:40   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Там строковые типы нужно учесть при преобразованиях
Код:
insert into pc (code, model, speed, ram, hd, cd, price)
  select
      min(code)+20,
      CAST(CAST(model AS int)+1000 AS varchar),
      max(speed),
      max(ram)*2,
      max(hd)*2,
      (select CAST(max(CAST(LEFT(cd,LEN(cd)-1) AS int)) AS varchar)+'x' from pc),
      max(price)/1.5
    from laptop
    group by model
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача по sql ts-alan SQL, базы данных 5 03.04.2016 13:18
Задача на PL/SQl ShaoKahn SQL, базы данных 0 05.12.2014 10:26
задача по SQL Mcduff Помощь студентам 2 29.05.2014 11:06
Задача на sql oleg2012g SQL, базы данных 3 22.05.2013 10:42
Задача по SQL Соул Помощь студентам 1 08.10.2011 20:43