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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2013, 16:09   #1
bolk007
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 12
По умолчанию нужно составить sql-запросы

Привет всем, только начала изучать SQL. Вот задания которые нужно решить. Проверьте меня, пожалуйста. Правильно ли я написала решение? Исходные данные:
Таблица ORGANIZATION - "Подразделение"
имеет колонки ORG_ID и PARENT_ID NAME
Таблица PERSON - "Сотрудник"
имеет колонки PERSON_ID, NAME ORG_ID
1. написать sql-запрос, формирующий список сотрудников с указанием названий подразделений, в которых они работают
2. написать sql-запрос, формирующий список названий подразделений с указанием количества сотрудников, которые в них работают


Решение:
1. SELECT PERSON_ID, NAME ORG_ID
FROM PERSON
GROUP BY PERSON_ID;

2.
SELECT NAME ORG_ID, COUNT(PERSON_ID) AS [Количество сотрудников]
FROM PERSON
GROUP BY NAME ORG_ID;
bolk007 вне форума Ответить с цитированием
Старый 03.04.2013, 16:31   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

неправильно
1 "формирующий список сотрудников с указанием названий подразделений"
- нет названий подразделений
- зачем тут GROUP BY ?
2 "формирующий список названий подразделений с указанием количества сотрудников, которые в них работают"
- нет списка подразделений
- запрос не верный
eval вне форума Ответить с цитированием
Старый 03.04.2013, 16:36   #3
bolk007
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 12
По умолчанию

я думала название подразделений это NAME ORG_ID? это мне тогда из двух таблиц нужно выборку делать?
bolk007 вне форума Ответить с цитированием
Старый 03.04.2013, 16:37   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

конечно .

Код:
я думала название подразделений это NAME ORG_ID?
в запросе это так, что вы тянете данные поля NAME и обзываете их как ORG_ID

Последний раз редактировалось Stilet; 03.04.2013 в 17:44.
eval вне форума Ответить с цитированием
Старый 03.04.2013, 16:44   #5
bolk007
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 12
По умолчанию

1. SELECT PERSON_ID, ORG_ID
FROM PERSON, ORGANIZATION
WHERE NAME ORG_ID=ORG_ID; (или это лишнее?)

2. SELECT ORG_ID, COUNT(PERSON_ID) AS [Количество сотрудников]
FROM PERSON, ORGANIZATION
GROUP BY ORG_ID;
bolk007 вне форума Ответить с цитированием
Старый 03.04.2013, 16:51   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

лучше синтаксис джойнов, оно нагляднее и понятнее, и про алиасы почитайте
Код:
SELECT P.PERSON_ID, P.NAME AS PERSON_NAME, O.ORG_ID, O.NAME AS ORG_NAME
FROM PERSON AS P
  INNER JOIN ORGANIZATION AS O ON O.ORG_ID = P.ORG_ID
и т.д.
eval вне форума Ответить с цитированием
Старый 03.04.2013, 17:00   #7
bolk007
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 12
По умолчанию

спасибо почитаю, а код это начало для первого задания или второго? и еще посоветуйте книги для новичков и в какой программе лучше обучаться, выполнять такие задания

и еще алиасы что такое?

Последний раз редактировалось Stilet; 03.04.2013 в 17:48.
bolk007 вне форума Ответить с цитированием
Старый 03.04.2013, 17:14   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

алиас (alias) - псевдоним, кличка ...
P.NAME AS PERSON_NAME
тут P.NAME - данные из поля name из таблицы person AS -нарекаем как PERSON_NAME - алиас
http://www.w3schools.com/sql/sql_alias.asp
eval вне форума Ответить с цитированием
Старый 04.04.2013, 00:02   #9
bolk007
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 12
По умолчанию

проверьте, пожалуйста еще раз

1. SELECT P.NAME AS PERSON_NAME, O.NAME AS ORG_NAME
FROM PERSON AS P, ORGANIZATION AS O
WHERE P.ORG_ID=O.ORG_ID

второй вариант с join

SELECT P.NAME AS PERSON_NAME, O.NAME AS ORG_NAME
FROM PERSON AS P
INNER JOIN ORGANIZATION AS O ON P.ORG_ID=O.ORG_ID

2. тут я не совсем разобралась как делать, можете разъяснить? делала аналогично одного примера из интернета

SELECT O.NAME AS ORG_NAME, F.ORG_COUNT
FROM ORGANIZATION AS O
SELECT P.ORG_ID, COUNT(P.ORG_ID) AS ORG_COUNT
FROM PERSON AS P
GROUP BY P.ORG_ID
HAVING COUNT(P.ORG_ID) F
WHERE P.ORG_ID=O.ORG_ID
bolk007 вне форума Ответить с цитированием
Старый 04.04.2013, 00:24   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

1 нормально
2 это не запрос, это 2 запроса, не по условию
хэвинг тут не к селу совсем
eval вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопросам знатокам и просто любителям, нужно составить не сложный sql запрос modz SQL, базы данных 3 14.08.2013 11:20
Нужно составить запросы настенка=) SQL, базы данных 4 26.05.2010 22:27
Составить запросы Lion4ik89 Фриланс 6 18.02.2010 07:53
нужно описать sql запросы BIS88 SQL, базы данных 3 26.02.2009 21:38