|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - запрос SQL |
|
Разное - запрос SQL
|
Пользователь Сообщения: 63 |
Профиль | Отправить PM | Цитировать Добрый день форумчане с праздничком Вас!!!
Помогите пожалуйста с одной вещью есть sql запрос к базе данных AdwentureWorks2008 поднятой на SQLServer 2008 BEGIN TRY select t1.FirstName,t1.LastName,t4.Name as divisionTitle,t2.JobTitle,t3.StartDate,t3.EndDate from person.person t1, HumanResources.Employee t2, HumanResources.EmployeeDepartmentHistory t3, HumanResources.Department t4 where t1.BusinessEntityID = t2.BusinessEntityID and t2.BusinessEntityID = t3.BusinessEntityID and t3.DepartmentID = t4.DepartmentID and t3.StartDate <= '01.01.2004' END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber; END CATCH; Вопрос заключается вот в чем При выборе даты нужно указывать где этот человек работал или работает. К примеру: если мы устанавливаем дату 01.01.2004 то получаем строку Rob Walters Engineering Senior Tool Designer 05.01.2002 30.06.2004 а если выбираем 01.10.2005 то получаем Rob Walters Tool Design Senior Tool Designer 01.07.2004 Мне не надо писать код, объяснять основы SQL запросов - я тупо не могу въехать в логику того как это делается!!!!! P.S. Я конечно понимаю праздник и я со своими глупыми вопросами тут, но все таки у меня уже мозги кипят))) Еще раз всех с праздником |
|
Отправлено: 21:29, 09-05-2013 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать virus8, ну а чего тебе не понятно?
Смотри, у тебя идет выборка SELECT поля, откуда, которые(!) WHERE t3.StartDate <= '01.01.2004' Соотв. от этого поля и идет просмотр. В первом случае Rob Walters Engineering Senior Tool Designer 05.01.2002(<=01.01.2004) 30.06.2004, во втором Rob Walters Tool Design Senior Tool Designer 01.07.2004 (<=01.10.2005) Поле t3.EndDate очевидно NULL и по этому не печатается. Т.е. при желании его надо выводить явно. Собственно говоря наличие данных в других полях нам безразлично, главное чтобы индексы совпадали и StartDate соответствовал условию. Все нормально, я не вижу причин для беспокойства |
------- Отправлено: 23:34, 09-05-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Вот вроде что то навоял))
BEGIN TRY select t1.FirstName,t1.LastName,t4.Name as divisionTitle,t2.JobTitle,t3.StartDate,t3.EndDate from person.person t1, HumanResources.Employee t2, HumanResources.EmployeeDepartmentHistory t3, HumanResources.Department t4 where t1.BusinessEntityID = t2.BusinessEntityID and t2.BusinessEntityID = t3.BusinessEntityID and t3.DepartmentID = t4.DepartmentID and (t3.EndDate > " + SaveText.Date + " or t3.EndDate is null) and (t3.StartDate < " + SaveText.Date + " or t3.StartDate = " + SaveText.Date + ")" END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber; END CATCH; А так спасибо - твой ответ кое-что прояснил! |
Отправлено: 23:52, 09-05-2013 | #3 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Даты лучше писать в формате ISO 8601
|
Отправлено: 16:35, 15-05-2013 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - SQL запрос с параметрами | konstantin80 | Программирование и базы данных | 2 | 17-09-2012 09:18 | |
Delphi - SQL запрос с параметром | iliya24 | Программирование и базы данных | 1 | 30-01-2010 10:28 | |
sql запрос | Вебмастеру | 20 | 30-12-2006 22:31 | ||
SQL запрос | pauluss | Вебмастеру | 5 | 11-06-2004 09:14 | |
SQL-запрос | anridir | Программирование и базы данных | 2 | 23-09-2002 07:11 |
|