Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите решить задачу / 16 сообщений из 16, страница 1 из 1
07.03.2020, 12:47
    #39935397
AlenkaInt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
Добрый день! Помогите с запросом, решаю задачки. И вот одну никак не могу. Подскажите, что я делаю не так.
Описание:
Схема БД состоит из четырех таблиц:
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.
Задача:
Для каждого производителя, выпускающего ПК-блокноты c объёмом жесткого диска не менее 10 Гбайт, найти скорости таких ПК-блокнотов. Вывод: производитель, скорость.
Как я решила:
Код: sql
1.
Select Product.maker, Laptop.speed from Product join Laptop on Product.model = Laptop.model where Product.type = 'laptop' and Laptop.hd >=10


Выдает сообщение, что не правильно. Я так понимаю, что мне надо как то условие Product.type = 'laptop' поместить в раздел где соединение таблиц, но вот как это сделать, не знаю.
Спасибо!
...
Рейтинг: 0 / 0
07.03.2020, 14:18
    #39935416
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
...
Рейтинг: 0 / 0
07.03.2020, 14:26
    #39935420
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
AlenkaInt
как это сделать, не знаю.
В ON можно писать такие же сложные логические выражения, как и в WHERE. В том числе можно объединять несколько условий через AND или OR.
...
Рейтинг: 0 / 0
07.03.2020, 18:30
    #39935454
AlenkaInt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
miksoft
AlenkaInt
как это сделать, не знаю.
В ON можно писать такие же сложные логические выражения, как и в WHERE. В том числе можно объединять несколько условий через AND или OR.

Конечно можно, я но не знаю синтаксиса. Насчет этого это мое предположение, может дело в другом совсем. Мой запрос на тестовых данных выдает правильный ответ, а на в проверочной базе нет, на 2 строки больше, поэтому я даже не знаю в какую сторону копать, т.к. не вижу данных выборки.
...
Рейтинг: 0 / 0
07.03.2020, 18:40
    #39935457
AlenkaInt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
Akina

Спасибо, написала и в Помощь.
...
Рейтинг: 0 / 0
07.03.2020, 19:02
    #39935459
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
AlenkaInt
Конечно можно, я но не знаю синтаксиса.
Как не знаете, если в вашем запросе уже все есть?
Код: sql
1.
Select Product.maker, Laptop.speed from Product join Laptop on Product.model = Laptop.model and Product.type = 'laptop' and Laptop.hd >=10
...
Рейтинг: 0 / 0
07.03.2020, 19:31
    #39935461
AlenkaInt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
miksoft
AlenkaInt
Конечно можно, я но не знаю синтаксиса.
Как не знаете, если в вашем запросе уже все есть?
Код: sql
1.
Select Product.maker, Laptop.speed from Product join Laptop on Product.model = Laptop.model and Product.type = 'laptop' and Laptop.hd >=10


Значит дело не в этом было.. Т.к. все равно такая же ошибка.
...
Рейтинг: 0 / 0
07.03.2020, 20:49
    #39935475
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
а где проверяете какая ошибка дословно
...
Рейтинг: 0 / 0
07.03.2020, 22:39
    #39935489
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
Намекну - 'Laptop' ака ПК-блокнот может быть и в таблице PC... во всяком случае ничто в описании этому не противоречит.
...
Рейтинг: 0 / 0
07.03.2020, 22:57
    #39935492
AlenkaInt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
Alex_Ustinov,
Ваш запрос вернул правильные данные на основной базе, но не прошел тест на проверочной базе.
* Неверное число записей (больше на 2)
...
Рейтинг: 0 / 0
07.03.2020, 23:00
    #39935493
AlenkaInt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
Akina, у меня запрос возвращает больше записей, чем надо :-(
Ваш запрос вернул правильные данные на основной базе, но не прошел тест на проверочной базе.
* Неверное число записей (больше на 2)
...
Рейтинг: 0 / 0
07.03.2020, 23:21
    #39935498
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
Akina
Намекну - 'Laptop' ака ПК-блокнот может быть и в таблице PC...
Вряд ли. Он же там будет неотличим от ПК.
...
Рейтинг: 0 / 0
08.03.2020, 18:40
    #39935587
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
miksoft
Вряд ли. Он же там будет неотличим от ПК.
Он и будет ПК. Однако в вопросе нет ни полслова о том, что это лаптоп, определено только наименование типа, связанного с конкретным экземпляром по полю model неизвестно в какой из таблиц.
AlenkaInt
* Неверное число записей (больше на 2)
DISTINCT не забыли?
...
Рейтинг: 0 / 0
08.03.2020, 18:51
    #39935589
AlenkaInt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
Akina,
Да, ответили сегодня из Помощи
"Вам нужно вывести только УНИКАЛЬНЫЕ сочетания производитель, скорость.
А в таблице Laptop у одного и того же производителя может быть несколько моделей с одинаковой скоростью. Поэтому выводятся дубликаты."
...
Рейтинг: 0 / 0
08.03.2020, 19:05
    #39935592
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
AlenkaInt
нужно вывести только УНИКАЛЬНЫЕ сочетания
На мой взгляд, это кривой вопрос. Из него эта уникальность никак не следует. Могли бы за столько лет отрихтовать формулировки.
...
Рейтинг: 0 / 0
08.03.2020, 19:40
    #39935595
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
miksoft
Могли бы за столько лет отрихтовать формулировки.
Да кто это будет делать? не смешно даже...
Эта БД у них ещё хоть немножко, но вменяема. А вот БД с кораблями - это просто апофеоз маразма. До сих пор не пофиксенный, и даже поползновений к тому не видать. А ведь сайту уже не год и не два.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите решить задачу / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]