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

Откуда: Тольятти
Сообщений: 127
По всей видимости придется конкретизировать вопрос.

Есть база с наборами заказов
Таблица № Заказы
CREATE TABLE [Zakaz] (
	[idZkaz] [int] IDENTITY (1, 1) NOT NULL ,//идентификатор
	[idZakazType] [int] NOT NULL ,//тип заказа
	[idUser] [int] NOT NULL ,//идентификатор пользователя
	[ZakazDate] [smalldatetime] NOT NULL ,//Дата
	[ZakazSum] [float] NOT NULL,//Сумма
	[ZakazState] [int] NULL ,//Состояние заказа
	CONSTRAINT [PK_ZAKAZ] PRIMARY KEY  CLUSTERED 
	([idZakaz])  
	ON [PRIMARY] 
) ON [PRIMARY]
Есть таблица которая хранит в себе перечень продукции
по этому заказу
CREATE TABLE [ZakazDitail] (
	[idZakazDitail] [int] IDENTITY (1, 1) NOT NULL ,//идентификатор
	[idZakaz] [int] NOT NULL,//идентификатор заказа
	[IdUser] [int] NOT NULL,//идентификатор пользова
	[ZakazDitailDate] [smalldatetime] NOT NULL ,//дата
	[idProduct] [int] NOT NULL,//идентификатор продукции
	[TypeSet] [int] NOT NULL ,//характеристики продукции
	[BetSet] [int] NOT NULL ,//характеристики продукции
	[Voz] [bit] NOT NULL,//характеристики продукции
	CONSTRAINT [PK_ZakazDitail] PRIMARY KEY  CLUSTERED 
	([idZakazDitail])  
	ON [PRIMARY] 
) ON [PRIMARY]
Есть временная таблица в которую вносятся
данные перечня продукции по новому заказу
CREATE TABLE [ZakazDitailTemp] (
	[idZakazDitailTemp] [int] IDENTITY (1, 1) NOT NULL ,//идентификатор
	[IdUser] [int] NOT NULL,//идентификатор пользова
	[idProduct] [int] NOT NULL,//идентификатор продукции
	[TypeSet] [int] NOT NULL ,//характеристики продукции
	[BetSet] [int] NOT NULL ,//характеристики продукции
	[Voz] [bit] NOT NULL,//характеристики продукции
	CONSTRAINT [PK_ZakazDitailTemp] PRIMARY KEY  CLUSTERED 
	([idZakazDitailTemp])  
	ON [PRIMARY] 
) ON [PRIMARY]
Поля в таблицах ZakazDitailTemp и ZakazDitail
TypeSet, BetSet,Voz могут принимать различные значения
для одного и тоже продукта (поле idProduct)
Так вот прежде чем принять заказ к исполнению
надо проверить, а нет ли такого же заказа у этого Заказчика.
Для этого надо сравнить на соотвествие две выборки
//Первая выборка
Select idProduct,TypeSet, BetSet,Voz from ZakazDitailTemp
where idUser=//идентификатор Заказчика
//вторя выборка
Select idProduct,TypeSet, BetSet,Voz from ZakazDitail
where idUser=//идентификатор Заказчика
Причем надо проверить соотвествие полей
idProduct,TypeSet, BetSet,Voz и при этом количество
строк в двух выборках, потому что могут быть сделаны
от одного заказчика 2 заказа на поставку продукции
с различным перечнем номенклатуры отличающиеся
2-3 позициями. Полностью одинаковые заказы не принимаются
до тех пор пока первый не будет исполнен.
Можно объединить эти две выборки по JOIN (так или иначе) при
совподении ключевых полей, но как сравнить
выборки с различным количеством строк?
Проверять на NULL?
Это надо создавать курсор и пробегать потом по
объединенной выборке и выдавать количество совпадений
и не совпадений. :( Это долго.
Может кто более простой метод подскажет?
27 июн 05, 09:41    [1651219]     Ответить | Цитировать Сообщить модератору
 Re: Пример выборки  [new]
гость111
Guest
Работа с множествами в Transact-SQL
очень интересная статья вполне может помочь
27 июн 05, 10:06    [1651282]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить