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

Откуда:
Сообщений: 171
Привет всем...пишу систему автоматизации...дело в том что у меня есть две таблицы..первая - таблица резервирования клиентов, в которой идет следующий формат - дата заезда, дата выезда, номер - вторая - web резервирования (дата заезда, дата выезда и id типа номера) - их надо совместить, то есть если я выберу клиента из web резервирования и хочу его поселить в реальном времени, то есть перенести его в таблицу резервирования, как мне проверить не занят ли этот номер в этот период времени???
14 июн 09, 15:52    [7297437]     Ответить | Цитировать Сообщить модератору
 Re: Необходим запрос для двух таблиц  [new]
iljy
Guest
vitalaqua,

подробнее - скрипты таблиц, скрипты заполнения, что хотите получить. с первого взгляда - как минимум не хватает таблицы соответствия номер - ид типа.
14 июн 09, 16:01    [7297453]     Ответить | Цитировать Сообщить модератору
 Re: Необходим запрос для двух таблиц  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
vitalaqua,

WHERE NOT EXISTS (...
UNION ALL
...)
14 июн 09, 16:02    [7297454]     Ответить | Цитировать Сообщить модератору
 Re: Необходим запрос для двух таблиц  [new]
vitalaqua
Member

Откуда:
Сообщений: 171
Таблица связи типа номера и номера есть, я без проблем выдерну id номера, мне важно чтобы можно было выявит занят ли номер в промежуток, гость может заехать с 21 по 28 число например, а интернет бронирования могут сделать на этот номер с 22 по 29 например, как проверить не совпадет ли это???
В таблицу резервирования инфа пишет ся так -
дата заезда дата выезда номер
21.06 28.06 5

как мне проверить что он занят например 22??
14 июн 09, 16:11    [7297461]     Ответить | Цитировать Сообщить модератору
 Re: Необходим запрос для двух таблиц  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
vitalaqua
как мне проверить что он занят например 22??
Читать отказываетесь что пишут? И просьбу предоставить DDL в игнор, я так понимаю?
14 июн 09, 17:24    [7297596]     Ответить | Цитировать Сообщить модератору
 Re: Необходим запрос для двух таблиц  [new]
vitalaqua
Member

Откуда:
Сообщений: 171
Таблица резервирования
CREATE TABLE [dbo].[Reservation](
[id_reserv] [int] IDENTITY(1,1) NOT NULL,
[appart_id] [int] NULL,
[datefrom] [datetime] NOT NULL,
[dateend] [datetime] NOT NULL,
[id_cl] [int] NULL,
[operation] [int] NOT NULL CONSTRAINT [DF_Reservation_operation] DEFAULT ((1)),
[saldo] [float] NOT NULL CONSTRAINT [DF_Reservation_saldo] DEFAULT ((0)),
[count_v] [int] NULL,
[count_c] [int] NULL,
[feed] [int] NULL,
[card_name] [varchar](100) COLLATE Cyrillic_General_CI_AS NULL,
[user_id] [int] NULL,
[guid] [uniqueidentifier] ROWGUIDCOL NULL CONSTRAINT [DF_Reservation_guid] DEFAULT (newid()),
[color] [int] NULL CONSTRAINT [DF_Reservation_color] DEFAULT ((65535)),
CONSTRAINT [PK_Reservation] PRIMARY KEY CLUSTERED
(
[id_reserv] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

И интернет бронирования
CREATE TABLE [dbo].[Web_reservation](
[id_w] [int] IDENTITY(1,1) NOT NULL,
[datefrom] [datetime] NULL,
[dateend] [datetime] NULL,
[id_type] [int] NOT NULL,
[real_date] [datetime] NULL CONSTRAINT [DF_Web_reservation_real_date] DEFAULT (getdate()),
[status] [int] NULL CONSTRAINT [DF_Web_reservation_is_prin] DEFAULT ((0)),
[password] [varchar](50) COLLATE Cyrillic_General_CI_AS NULL,
[surname] [varchar](50) COLLATE Cyrillic_General_CI_AS NULL,
[firstname] [varchar](50) COLLATE Cyrillic_General_CI_AS NULL,
[tel] [varchar](20) COLLATE Cyrillic_General_CI_AS NULL,
CONSTRAINT [PK_Web_reservation] PRIMARY KEY CLUSTERED
14 июн 09, 17:57    [7297644]     Ответить | Цитировать Сообщить модератору
 Re: Необходим запрос для двух таблиц  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
vitalaqua,

Где хранится ID или прямой номер резервируемых апартаментов? В [Reservation], я так понимаю, это [apprt_id], а вот в [Web_reservation] где - непонятно...
14 июн 09, 18:14    [7297656]     Ответить | Цитировать Сообщить модератору
 Re: Необходим запрос для двух таблиц  [new]
vitalaqua
Member

Откуда:
Сообщений: 171
id appartaments - ссылается на таблицу номеров, в которой есть привязка к типу номера, в таблице reservation я сразу знаю в каком номере будет жить гость, а вот в таблице web reservation я только знаю в каком типе номера будет он жить, вот как раз и нужно посмотреть в каком из номеров свободно и туда и поселить, зная тип номера
14 июн 09, 18:38    [7297685]     Ответить | Цитировать Сообщить модератору
 Re: Необходим запрос для двух таблиц  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
vitalaqua
id appartaments - ссылается на таблицу номеров, в которой есть привязка к типу номера, в таблице reservation я сразу знаю в каком номере будет жить гость, а вот в таблице web reservation я только знаю в каком типе номера будет он жить, вот как раз и нужно посмотреть в каком из номеров свободно и туда и поселить, зная тип номера
Эээ... обождите. А как Вы собираетесь узнать о факте резервирования по Интернету, если такая информация нигде не хранится?
14 июн 09, 18:41    [7297688]     Ответить | Цитировать Сообщить модератору
 Re: Необходим запрос для двух таблиц  [new]
vitalaqua
Member

Откуда:
Сообщений: 171
а web reservation для чего???
Туда бронирование через нет попадет..
14 июн 09, 19:20    [7297735]     Ответить | Цитировать Сообщить модератору
 Re: Необходим запрос для двух таблиц  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
vitalaqua,

Как я понял, для веб-заказа на определенную дату Вы хотите вывести список доступных апартаментов. Таблица комнат Вы не привели, поэтому могу догадаться, что запрос будет выглядеть так:
DECLARE @id_w INT
SET @id_w = 0 -- ID получаем с клиента

SELECT
	appart_id
FROM [Appartment]
	JOIN [Reservation] ON [Appartment].[appart_id] = [Reservation].[appart_id]
WHERE NOT EXISTS (
	SELECT
		*
	FROM [Web_reservation] WR
	WHERE WR.[id_w] = @id_w
		AND [Appartment].[id_type] = WR.[id_type]
		AND WR.[datefrom] BETWEEN Reservation.[datefrom] AND [Reservation].[dateend]
		AND WR.[dateend] BETWEEN Reservation.[datefrom] AND [Reservation].[dateend]
)
15 июн 09, 02:36    [7298377]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить