Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> sql запрос 
:(
    Опции темы
Алкоголик
Дата 6.12.2011, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 26.1.2004

Репутация: нет
Всего: нет



Добрый день.
Таблица  1:
 Производитель
-------------------
ID
Name

Таблица 2:
Компьютеры
-----------------
Id
IdProisvoditel
VVint


Найти производителей персональных компьютеров, у всех модели которых VVint не менее 20 Гбайт .

Определить выполняется условие для одного производителя легко:
Код

SELECT Proisvod.name, COUNT(Pctable.vvint);
 FROM ;
     PC!PCTABLE ;
    INNER JOIN PC!PROISVOD ;
   ON  Pctable.proisvod = Proisvod.id;
 WHERE (Pctable.vvint <  20);
   AND  Pctable.proisvod =  2;
 GROUP BY Proisvod.name


А можно ли средствами самого sql сделать выборку всех производителей удовлетворяющих условию?
PM MAIL   Вверх
Zloxa
Дата 6.12.2011, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



обфусцированный sql-ex?

Задание 6 Обучающего этапа.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Алкоголик
Дата 6.12.2011, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 26.1.2004

Репутация: нет
Всего: нет



А можно ссылочку?
PM MAIL   Вверх
Алкоголик
Дата 6.12.2011, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 26.1.2004

Репутация: нет
Всего: нет



Ссылочку наше, но это не то. Там не учитывается, что все модели должны обладать винтом больше определенного размера. Если хотя бы один меньше, то производителя уже не выводим.
PM MAIL   Вверх
Zloxa
Дата 6.12.2011, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Алкоголик, где вы получили это задание?

Код

select * from Таблица1 t1 where not exists (select null from Таблица2 t2 where t1.id = t2.IdProisvoditel and t2.wint < 20)



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
AndreyIQ
Дата 6.12.2011, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 5.2.2007

Репутация: 3
Всего: 8



Если я Вас правильно понял, то примерно так:
Код

SELECT Proisvod.name
FROM Proisvod
where not exists
(SELECT * FROM PC WHERE PC.vvint < 20 and PC.proisvod = Proisvod.id)

PM MAIL   Вверх
Алкоголик
Дата 6.12.2011, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 26.1.2004

Репутация: нет
Всего: нет



Zloxa,  это вопрос из курсовой из института. Похоже что преподаватель за основу взял вопросы с sql-ex smile Но я до вас об этом сайте и не слыхал

Не столь важно, но интересно для себя. 
Если существует производитель у которого нет ни одного компьютера, то он тоже попадет же в выборку этого запроса. Как избежать этого?

Это сообщение отредактировал(а) Алкоголик - 6.12.2011, 11:42
PM MAIL   Вверх
Zloxa
Дата 6.12.2011, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Алкоголик @  6.12.2011,  11:26 Найти цитируемый пост)
Не столь важно

Важно, потому что вопросы sql-ex обсуждать вне sql-ex - моветон. По крайней мере так было пару лет назад.
Цитата(Алкоголик @  6.12.2011,  11:26 Найти цитируемый пост)
Если существует производитель у которого нет ни одного компьютера, то он тоже попадет же в выборку этого запроса. Как избежать этого?


Код

select p.name 
from (
  SELECT proisvod 
  FROM PC
  group by proisvod 
  having count(case when vvint <20 then 1 end) = 0
) s
inner join Proisvod p on p.id = s.proizvod 

Цитата(Алкоголик @  6.12.2011,  11:26 Найти цитируемый пост)
это вопрос из курсовой из института

За этим в ЦП.
RTFM Не задавайте вопросы из домашних заданий!

Это сообщение отредактировал(а) Zloxa - 6.12.2011, 12:02


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1001 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.