Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите поправить запрос  [new]
evgeniy74
Member

Откуда:
Сообщений: 7
Это таблица ВСП
USE [Инкассация]
GO
/****** Объект: Table [dbo].[ВСП] Дата сценария: 01/31/2013 00:29:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[ВСП](
[id_ВСП] [nchar](10) NOT NULL,
[Номер_ВСП] [nchar](10) NULL,
[Адрес] [varchar](max) NULL,
[Режим_работы] [varchar](50) NULL,
[Время_заезда] [varchar](50) NULL,
[Телефон] [char](10) NULL,
[id_сотрудника] [char](10) NULL,
[id_маршрута] [char](10) NULL,
CONSTRAINT [PK_ВСП] PRIMARY KEY CLUSTERED
(
[id_ВСП] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[ВСП] WITH CHECK ADD CONSTRAINT [FK_ВСП_Маршруты] FOREIGN KEY([id_маршрута])
REFERENCES [dbo].[Маршруты] ([id_маршрута])
GO
ALTER TABLE [dbo].[ВСП] CHECK CONSTRAINT [FK_ВСП_Маршруты]
GO
ALTER TABLE [dbo].[ВСП] WITH CHECK ADD CONSTRAINT [FK_ВСП_Сотрудники] FOREIGN KEY([id_сотрудника])
REFERENCES [dbo].[Сотрудники] ([id_сотрудника])
GO
ALTER TABLE [dbo].[ВСП] CHECK CONSTRAINT [FK_ВСП_Сотрудники]
Так выглядит таблица сотрудники
USE [Инкассация]
GO
/****** Объект: Table [dbo].[Сотрудники] Дата сценария: 01/31/2013 00:30:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Сотрудники](
[id_сотрудника] [char](10) NOT NULL,
[Фамилия] [varchar](50) NULL,
[Имя] [varchar](50) NULL,
[Отчество] [varchar](50) NULL,
[Дата_рождения] [smalldatetime] NULL,
[Паспорт] [text] NULL,
[Адрес_регистрации] [text] NULL,
[Адрес_проживания] [text] NULL,
[id_должности] [char](10) NULL,
[id_подразделения] [char](10) NULL,
CONSTRAINT [PK_Сотрудники] PRIMARY KEY CLUSTERED
(
[id_сотрудника] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Сотрудники] WITH CHECK ADD CONSTRAINT [FK_Сотрудники_Должности] FOREIGN KEY([id_должности])
REFERENCES [dbo].[Должности] ([id_должности])
GO
ALTER TABLE [dbo].[Сотрудники] CHECK CONSTRAINT [FK_Сотрудники_Должности]
GO
ALTER TABLE [dbo].[Сотрудники] WITH CHECK ADD CONSTRAINT [FK_Сотрудники_Список_подразделений] FOREIGN KEY([id_подразделения])
REFERENCES [dbo].[Список_подразделений] ([id_подразделения])
GO
ALTER TABLE [dbo].[Сотрудники] CHECK CONSTRAINT [FK_Сотрудники_Список_подразделений]
Это маленькая таблица с должностями
USE [Инкассация]
GO
/****** Объект: Table [dbo].[Должности] Дата сценария: 01/31/2013 00:34:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Должности](
[id_должности] [char](10) NOT NULL,
[Должность] [varchar](50) NOT NULL,
[Оклад] [char](10) NULL,
CONSTRAINT [PK_Должности_1] PRIMARY KEY CLUSTERED
(
[id_должности] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
Это запрос к этим таблицам
use Инкассация
SELECT (f.Фамилия + ' ' + f.Имя+' ' + f.Отчество) AS ФИО
,id_должности ,
Номер_ВСП, Адрес,Телефон,Маршруты.Номер_маршрута
FROM ВСП

INNER JOIN
Маршруты ON Маршруты.id_маршрута = ВСП.id_маршрута
INNER JOIN
Сотрудники AS f ON f.id_сотрудника = ВСП.id_сотрудника

WHERE Маршруты.id_маршрута LIKE '%1%'
ORDER BY Номер_ВСП, Номер_маршрута
Так выглядит результат
Соколова Татьяна Сергеевна 7 3967/077 р/п Дергачи, ул.Центральная 23 2-45-78 001/1

Не могу заставить в столбце id_должности отобразить колонку с наименованием должности [Должность] [varchar](50) NOT NULL,
31 янв 13, 00:41    [13854093]     Ответить | Цитировать Сообщить модератору
 Re: Помогите поправить запрос  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1157
evgeniy74,

в списке возвращаемых полей добавьте:

...
D.Должность

...

а внизу добавьте:
...
INNER JOIN Должности AS D ON D.id_должности = ВСП.id_должности

...
31 янв 13, 00:47    [13854102]     Ответить | Цитировать Сообщить модератору
 Re: Помогите поправить запрос  [new]
evgeniy74
Member

Откуда:
Сообщений: 7
Alexander2,

Я. пробовал так вот что выходит:
use Инкассация
SELECT (f.Фамилия + ' ' + f.Имя+' ' + f.Отчество) AS ФИО
,id_должности , D.Должность
Номер_ВСП, Адрес,Телефон,Маршруты.Номер_маршрута
FROM ВСП
INNER JOIN Должности AS D ON D.id_должности = ВСП.id_должности

INNER JOIN
Маршруты ON Маршруты.id_маршрута = ВСП.id_маршрута
INNER JOIN
Сотрудники AS f ON f.id_сотрудника = ВСП.id_сотрудника

WHERE Маршруты.id_маршрута LIKE '%1%'
ORDER BY Номер_ВСП, Номер_маршрута

Сообщение 207, уровень 16, состояние 1, строка 6
Недопустимое имя столбца "id_должности".
Сообщение 209, уровень 16, состояние 1, строка 3
Неоднозначное имя столбца "id_должности".
31 янв 13, 08:03    [13854394]     Ответить | Цитировать Сообщить модератору
 Re: Помогите поправить запрос  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1157
evgeniy74,

хрен знает что! взял имя таблицы имя поля из кода сверху.

может так написать?!
SELECT (f.Фамилия + ' ' + f.Имя+' ' + f.Отчество) AS ФИО
,ВСП.id_должности , D.Должность.....
31 янв 13, 08:12    [13854408]     Ответить | Цитировать Сообщить модератору
 Re: Помогите поправить запрос  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1157
Alexander2,

ooops
SELECT (f.Фамилия + ' ' + f.Имя+' ' + f.Отчество) AS ФИО
,f.id_должности , D.Должность.....
31 янв 13, 08:13    [13854410]     Ответить | Цитировать Сообщить модератору
 Re: Помогите поправить запрос  [new]
icprog
Member

Откуда:
Сообщений: 166
evgeniy74,

INNER JOIN Должности AS D ON D.id_должности =f.id_должности
31 янв 13, 09:20    [13854622]     Ответить | Цитировать Сообщить модератору
 Re: Помогите поправить запрос  [new]
icprog
Member

Откуда:
Сообщений: 166
icprog,

и в списке возвращаемых полей вместо id_должности укажите f.id_должности
31 янв 13, 09:24    [13854644]     Ответить | Цитировать Сообщить модератору
 Re: Помогите поправить запрос  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Alexander2
хрен знает что! взял имя таблицы имя поля из кода сверху.

В таблице ВСП нет поля id_должности.
31 янв 13, 09:51    [13854750]     Ответить | Цитировать Сообщить модератору
 Re: Помогите поправить запрос  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1157
Гость333,
да, блин, так оформлено сообщение, что в глазах рябит... ;) ошибся малость. Но чел. все равно не просекает принцип.
31 янв 13, 12:51    [13856123]     Ответить | Цитировать Сообщить модератору
 Re: Помогите поправить запрос  [new]
evgeniy74
Member

Откуда:
Сообщений: 7
Alexander2,

Саныч, завтра всё попробую ещё раз, поле Должность конечно можно и убрать, но это диплом поэтому хотелось бы разобраться.
1 фев 13, 01:07    [13859870]     Ответить | Цитировать Сообщить модератору
 Re: Помогите поправить запрос  [new]
evgeniy74
Member

Откуда:
Сообщений: 7
Спасибо дошло
13 фев 13, 00:07    [13917264]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить