PDA

Просмотр полной версии : Sql


lomerok
02.05.2008, 18:29
Уроки СКУЛЯ на http://sql-ex.ru/
--------------------------------------------------------------------------------------
Краткая информация о базе данных "Компьютерная фирма":

Схема БД состоит из четырех отношений:

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 - принтер). Предполагается, что номера моделей уникальны для всех производителей и типов продуктов. В отношении PC для каждого номера модели, обозначающего ПК, указаны скорость -speed (процессора в мегагерцах), общий объем RAM (в мегабайтах), размер диска -hd (в гигабайтах), скорость считывающего устройства CD (например, 4х) и цена - price. Отношение Laptop аналогично отношению РС за исключением того, что вместо скорости CD содержится размер экрана -screen (в дюймах). В отношении Printer для каждой модели принтера указывается, является ли он цветным - color ('y', если цветной), тип принтера - type (лазерный - Laser, струйный - Jet или матричный - Matrix) и цена.
---------------------------------------------------------------------------
Задание: 6
Укажите производителя и скорость для тех ПК-блокнотов, которые имеют жесткий диск объемом не менее 10 Гбайт.
---------------------------------------------------------------------------

SELECT (SELECT maker FROM PC) speed FROM Laptop WHERE hd>=10

что нетак ???

taha
02.05.2008, 18:39
SELECT DISTINCT Product.maker, Laptop.speed
FROM Product, Laptop
WHERE Laptop.hd >= 10
AND Product.model = Laptop.model

ВЫБРАТЬ производителя и скорость лаптопа
ИЗ Продуков и Лаптопов
ГДЕ объем hd больше либо равен 10 и модель в таблице продуктов совпадает с моделью в таблице лаптопов

VDShark
02.05.2008, 20:15
Вообще интереснее решать самому, а не просить решения =)
Тем более такие элементарные задачки... Там естьнеплохой справочник, и тд и тп =)
Уже сколько лет проекту - а он все еще актуален, и развивается :)

lomerok
02.05.2008, 23:20
nepoluchaetsa samomu blin ...

Задание: 7
Найдите номера моделей и цены всех продуктов (любого типа) выпущенных производителем B (латинская буква).

SELECT Product.model, PC.price, Laptop.price, Printer.price FROM Product, PC, Laptop, Printer WHERE maker='B'

chto netak ?

taha
02.05.2008, 23:37
У тебя в запросе ты запрашиваешь модель, цену пк, цену лаптопа, цену принтера фирмы 'B'! Должно быть 2 столбца, с моделью и ценой... А у тебя сколько будет?

Используй объединение UNION! хотябы самое тупое:


select product.model, pc.price
from product, pc
where product.maker='B' and product.model = pc.model

union

ДАЛЬШЕ ПРИДУМАЙ САМ!

lomerok
02.05.2008, 23:44
select product.model, pc.price
from product, pc
where product.maker='B' and product.model = pc.model

union
select product.model, laptop.price
from product , laptop
where product.maker='b' and product.model = laptop.model

vsoravno nevihodit

lomerok
02.05.2008, 23:45
что даёт Union ? объеденяет несколько запросов , ды ?

VDShark
02.05.2008, 23:46
vsoravno nevihodit


Про таблицу принтеров забыл

lomerok
02.05.2008, 23:48
select product.model, pc.price
from product, pc
where product.maker='B' and product.model = pc.model

union
select product.model, laptop.price
from product , laptop
where product.maker='b' and product.model = laptop.model
union select product.model,printer.price
from product , printer
where product.maker='b' and product.model = printer.model

получилось , ура.......

lomerok
03.05.2008, 05:25
Найдите производителя, выпускающего ПК, но не ПК-блокноты.

SELECT maker from product where type='pc'

что снова нетак ?7?

.Slip
03.05.2008, 05:40
not блядь

taha
03.05.2008, 08:31
AND

product.maker not in (
select product.maker
from product
where product.type = 'Laptop')

А вообще знаешь что? чего тебя так и дальше тащить? Вот почитай и сам, сам
http://www.sql.ru/docs/sql/u_sql/index.shtml

VDShark
03.05.2008, 11:39
Обычная операция разности... Пофантазировал бы хоть немного сам что ли :)
А вообще тм на самом сайте есть справочник, ориентированный на эти задачи:
http://www.sql-ex.ru/help/select0.php

lomerok
04.05.2008, 12:08
Задание: 8
Найдите производителя, выпускающего ПК, но не ПК-блокноты.

SELECT DISTINCT Product.maker
FROM Product,PC,Laptop WHERE type='pc' and Product.model<>Laptop.model

что нетак б всю ману пролистал ниче невыходит ........

lomerok
04.05.2008, 12:16
никанает ......Ж(((

lomerok
04.05.2008, 12:20
вотак работает , но не та как нужно...


SELECT DISTINCT maker
FROM Product,Laptop WHERE type='pc' and Product.model<>Laptop.model

taha
04.05.2008, 12:23
https://forum.antichat.ru/showpost.php?p=674738&postcount=12
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

select distinct product.maker
from product
where product.type='PC' and
product.maker not in (
select product.maker
from product
where product.type = 'Laptop')

.acme
04.05.2008, 12:23
SELECT DISTINCT maker
FROM Product,Laptop WHERE type='pc' and not Product.model=Laptop.model

lomerok
04.05.2008, 12:29
всем спасиба .. работает на ура ... буду дальше биться головой в монитор ...

lomerok
04.05.2008, 12:42
Найдите принтеры, имеющие самую высокую цену. Вывести: model, price

Как пишется "Самое большое"
SELECT model ,price FROM Printer WHERE price

krypt3r
04.05.2008, 13:20
lomerok, если ты будешь каждый вопрос оттуда постить, то знаний по SQL у тебя не прибавится

lomerok
04.05.2008, 13:24
ну дк в мануале я ничего про ето не нашол .....

presidentua
04.05.2008, 13:27
Найдите принтеры, имеющие самую высокую цену. Вывести: model, price
Как пишется "Самое большое"
SELECT model ,price FROM Printer WHERE priceSELECT model,price FROM Printer ORDER BY price LIMIT 5

lomerok
04.05.2008, 13:29
SELECT model,price FROM Printer ORDER BY price LIMIT 5
Incorrect syntax near 'LIMIT'.

krypt3r
04.05.2008, 13:29
Это нахождения максимального значения в колонке-то нету в мануале? о_О
ЗЫ select model, price from printer where price = (select max(price) from printer)

lomerok
04.05.2008, 13:35
спасибо krypt3r

presidentua
04.05.2008, 13:36
Incorrect syntax near 'LIMIT'.
Добавь кавычки...

lomerok
04.05.2008, 13:44
Добавь кавычки...
дабавлял ....

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

ввожу :
SELECT DISTINCT maker FROM Product,PC WHERE PC.model=Product.model and type='pc' and not type='Laptop' and not type='Printer'

в чем ошибка ???
вроде всё верно ....

krypt3r
04.05.2008, 13:44
presidentua, код

SELECT model,price FROM Printer ORDER BY price LIMIT 5

Выведет первые 5 записей, отсортированных по полю price в порядке возрастания. Это совсем не подходит к условиям

lomerok
04.05.2008, 13:52
Задание: 11
Найти тех производителей ПК, все модели ПК которых имеются в таблице PC.
----------
SELECT DISTINCT maker FROM Product,PC WHERE PC.model=Product.model and not(type='Laptop' and type='Printer')
nтоже нефурычит ...

presidentua
04.05.2008, 13:53
presidentua, код

SELECT model,price FROM Printer ORDER BY price LIMIT 5

Выведет первые 5 записей, отсортированных по полю price в порядке возрастания. Это совсем не подходит к условиям
Согласен. Выведет 5 принтеров с самой большой ценой. Но не с максимальной. Просто условия не совсем четко звучат.