Официальный сайт студ.городка НГТУ
Программирование и БД » SQL, помогите с запросами плиз 

#1  22.02.10 17:45

sav
Профиль

SQL, помогите с запросами плиз

Departement
____________
id
name

Employee
____________
id
name
depId
salary

1. Запрос: как получить список всех отделов и количество сотрудников в них? (включая те отделы, в которых нет сотрудников)
2. Как вывести отделы с суммарной з.п.
3. Как удалить отделы без сотрудников?

В качестве соединения использовать JOINs, и не делать объединения с помощью WHERE.

PS: если ли в инете удаленные базы, чтобы можно было потестить? Не хочу сервер ставить:(

Offline

#2  22.02.10 17:49

sav
Профиль

Re: SQL, помогите с запросами плиз

мои возможные варианты:

1. select d.name, count(*) from department d left join employee e on d.id = e.depid group by d.name
2. select d.name, count(e.salary) department d left join employee e on d.id = e.depid group by d.name
3. delete from departement where id not exist
     (select depId from employee)

поправьте плииииз, или если есть возможность проверьте...

Offline

#3  22.02.10 22:52

Re: SQL, помогите с запросами плиз

sav написал(а):

1. select d.name, count(*) from department d left join employee e on d.id = e.depid group by d.name

select d.name, count(e.depid) from department d left outer join employee e on d.id = e.depid group by d.name

sav написал(а):

select d.name, count(e.salary) department d left join employee e on d.id = e.depid group by d.name

select d.name, sum(e.salary) department d left join employee e on d.id = e.depid group by d.name

Offline

#4  23.02.10 10:20

Re: SQL, помогите с запросами плиз

Ключевое слово join в SQL используется при построении select выражений. Инструкция Join позволяет объединить колонки из нескольких таблиц в одну. Объединение происходит временное и целостность таблиц не нарушается. Существует три типа join-выражений:

    * inner join;
    * outer join;
    * cross join;

В свою очередь, outer join может быть left, right и full (слово outer обычно опускается).
В качестве примера (DBMS Oracle) создадим две простые таблицы и сконструируем для них SQL-выражения с использованием join.

Outer тут разве что для идейной верности...

Offline

#5  23.02.10 11:02

Re: SQL, помогите с запросами плиз

я так понял это тесты из собеседования, они должны быть идейно верными

Offline

#6  24.02.10 09:36

sav
Профиль

Re: SQL, помогите с запросами плиз

спасибо, учту, во втором опечатка была, спасиб, что поправили

Offline

#7  25.02.10 13:18

Re: SQL, помогите с запросами плиз

Укроп написал(а):

Matrim написал(а):

я так понял это тесты из собеседования

САВ В ОЧЕРЕДНОЙ РАЗ ПЫТАЛСЯ ПРОЙТИ АТТЕСТАЦИЮ..

Это не я бляяя...

Offline

#8  25.02.10 17:33

Re: SQL, помогите с запросами плиз

sav написал(а):

мои возможные варианты:

3. delete from departement where id not exist
     (select depId from employee)

Правильнее так:
delete from departement dep where not exist
     (select depId from employee where depId=dep.id)

Offline

#9  25.02.10 20:18

Re: SQL, помогите с запросами плиз

Есть мнение, что коррелированные запросы есть зло и по возможности их стоит избегать в виду их медлительности... Хотя в данном случае на мой взгляд это вполне приемлемый вариант.

Offline

#10  26.02.10 09:37

Re: SQL, помогите с запросами плиз

efferson, я бы так не сказал. Удаление данных с помощью коррелированного запроса из таблицы порядка 100млн. строк выполняется за 5 минут.

Offline

#11  01.03.10 19:28

sav
Профиль

Re: SQL, помогите с запросами плиз

Укроп написал(а):

Matrim написал(а):

я так понял это тесты из собеседования

САВ В ОЧЕРЕДНОЙ РАЗ ПЫТАЛСЯ ПРОЙТИ АТТЕСТАЦИЮ..

неудачно, но не из за SQL:(((

и почему в очередной раз??:)))


да, кстати, те кто хочет набить себе руку, просто скачайте "понимание SQL". в конце каждой главы есть вопросы по запросам и ответы. может глубины SQL вы знать и не будете, но руку набъете и будете чувствовать себя уверенным

Offline

Программирование и БД » SQL, помогите с запросами плиз 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.027 сек.
Выполнено 14 запросов.