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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2013, 23:12   #1
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию Составить SQL-запрос.

Доброго времени суток!
Сразу оговорюсь, что надо это человеку, пытающемуся устроиться на работу, почему-то требуют составить тестовый запрос. Хотя работа будет заключаться в механическом "тыканьи" на кнопки... Ну, собственно, как и везде в постСССР)) Учатся одному, на работе по специальносте делают другое. Так вот, помогите, пожалуйста, (побоялся нагло написать "составьте за меня" ибо это так, но как-то стыдно, а времени изучать с нуля этот язык нет) составить запрос, прилагаю ТЗ.
Код:
Дана БД, содержащая 2 таблицы:
1. таблица сотрудников  - уникальный номер сотрудника и ФИО
2. журнал прохода сотрудников через проходную - уникальный номер сотрудника, прошедшего через КПП, дата/время прохода через КПП, признак прохода на территорию офиса – True – вход в офис, False – выход
Система, работающая с БД фиксирует все факты прохода сотрудников через КПП, т.е., если сотрудник пришел на работу в 9:00, ушел на обед в 12:00, вернулся с обеда в 12:40, а затем ушел домой в 18-00, то в таблице-журнале будет 4 записи
Номер сотрудника	Время			Вход
1			01.03.2011 09:00	True
1			01.03.2011 12:00	False
1			01.03.2011 12:40	True
1			01.03.2011 18:00	False
Заранее спасибо!
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 24.10.2013, 23:22   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,325
По умолчанию

Мой уровень знаний SQL равен 1 сданной лабе, но все же, а где информация, что именно нужно выбрать в БД?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.10.2013, 07:24   #3
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Дико извиняюсь, не все скопировал.
Код:
Необходимо написать запрос для выборки ФИО всех сотрудников, которые не пришли на работу 01.03.2011 или опоздали (появились в офисе после 10:00)
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 25.10.2013, 07:54   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT S.*
  FROM Сотрудники S
  WHERE NOT EXISTS(SELECT * FROM Журнал G WHERE G.[номер сотрудника]=S.[номер сотрудника]) AND G.Время>='20110301' AND G.Время<'20110302' AND Вход=1) OR
        (SELECT TOP 1 G.Время FROM Журнал G WHERE G.[номер сотрудника]=S.[номер сотрудника]) AND G.Время>='20110301' AND G.Время<'20110302' AND Вход=1 ORDER BY G.Время)>'20110301 10:00:00'
С датой-временем проблем, для разных СУБД по разному, написал для сиквела. И ситуацию когда пришел на работу вчера и не ушел не учитывал, а надо?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.10.2013, 08:02   #5
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Аватар, спасибо! Думаю, этого будет достаточно.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 07.11.2013, 13:49   #6
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

помогите составить запрос из двух идентичных таблиц основанный на разнице в одном поле (tb1.field5<>tb2.field5). А че-то гуглю и никак не доходит, всякие джоины лепят одну таблицу к другой, а мне нужна результирующая таблица такой же структуры как и две исходные, которая содержит только те записи, которые не совпадают в обеих таблицах. Вроде задача простая, но че-то не могу понять, первый раз с этим сталкиваюсь. Спасибо.

Тут прикинул:

Код:
SELECT field1, field2, field5
FROM tb1, tb2 
WHERE tb1.field5<>tb2.field5
Норм?
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo

Последний раз редактировалось regman; 07.11.2013 в 13:53.
regman вне форума Ответить с цитированием
Старый 07.11.2013, 14:02   #7
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 638
По умолчанию

Не указал, что другие поля совпадают.
** Удача терпелива. **
Vad3333@inbox.ru
Vad33 вне форума Ответить с цитированием
Старый 07.11.2013, 14:05   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Норм?
Не норм. Получите кросс-таблицу не меренной длины. Должны быть еще и ключи. А так для каждой записи одной таблицы выберутся все записи другой с не совпадающим значением поля
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.11.2013, 14:06   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Норм?
нет!!!
(никто не мешает Вам запустить свой запрос, чтобы увидеть, почему "нет!!!")

думаю, что Вы ожидаете что-то вроде:
Код:
SELECT field1, field2, field5
FROM tb1 
where field5 not in (select field5 from tb2 )
union all
SELECT field1, field2, field5
FROM tb2
where field5 not in (select field5 from tb1)
внимание! это просто один из вариантов, где поле filed5 рассматривается как ключевое для определения того, что выводить из каждой из двух таблиц.
Очень вероятно, что Вы ожидаете чего-то совсем другого!

p.s. а зачем в чужую тему писать?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.11.2013, 14:21   #10
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
Хорошо

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
нет!!!
(никто не мешает Вам запустить свой запрос, чтобы увидеть, почему "нет!!!")

думаю, что Вы ожидаете что-то вроде:
Код:
SELECT field1, field2, field5
FROM tb1 
where field5 not in (select field5 from tb2 )
union all
SELECT field1, field2, field5
FROM tb2
where field5 not in (select field5 from tb1)
внимание! это просто один из вариантов, где поле filed5 рассматривается как ключевое для определения того, что выводить из каждой из двух таблиц.
Очень вероятно, что Вы ожидаете чего-то совсем другого!

p.s. а зачем в чужую тему писать?!
спасибо, именно то что нужно.

П.С. Чтобы темы не плодить, так как название темы общее...
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo
regman вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите составить SQL запрос с вычислением Gift020 Помощь студентам 5 09.10.2013 13:33
сложный sql запрос, реально ли вообще составить? undead92 SQL, базы данных 4 19.08.2013 09:43
Не могу составить SQL-запрос helpkz SQL, базы данных 36 04.04.2013 16:10
Как составить SQL запрос(запутался совсем) Messir_Leonard SQL, базы данных 2 17.03.2013 15:22
помогите составить SQL запрос!!!! MAKSA БД в Delphi 12 07.08.2009 11:12