Допустим, нам дана следующая таблица, хранящая дерево категорий:
CREATE TABLE [dbo].[Categories](
[CategoryId] [int] IDENTITY(1,1) NOT NULL,
[CategoryName] [nvarchar](250) NOT NULL,
[ParentId] [int] NULL,
[Level] [int] NOT NULL,
CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED
(CategoryId] ASC)
)
В таблице хранятся категории со ссылкой на родителя и их уровень. Уровень корня будет равен 1. Мы вводим уровень, для того, чтобы затем удобно строить дерево категорий в HTML.
Очевидно, нам потребуется какой-то путь автоматического расчета уровней для дерева категорий.
Например, это можно сделать такой вот процедурой:
CREATE PROCEDURE CatRebuildLevels
AS
BEGIN
DECLARE @CLevel int;
set @CLevel=1;
UPDATE Categories SET [Level]=0 WHERE NOT ParentId IS NULL;
UPDATE Categories SET [Level]=1 WHERE ParentId IS NULL;
WHILE (SELECT COUNT(*)
FROM Categories C
INNER JOIN Categories PC
ON PC.CategoryId=C.ParentId
WHERE PC.[Level] = @CLevel) > 0
BEGIN
UPDATE Categories
SET Categories.[Level]=@CLevel+1
WHERE CategoryId IN
(SELECT C.CategoryId
FROM Categories C
INNER JOIN Categories PC
ON C.ParentId = PC.CategoryId
WHERE
PC.[Level] = @CLevel)
set @CLevel = @CLevel+1
END
END
Общая идея - проставлять рекуррентно уровень, начиная с единицы. Каждый следующий уровень будет на 1 больше, чем предыдущий. Совсем несложно адаптировать эту процдуру для триггеров.
Показаны сообщения с ярлыком sqlserver. Показать все сообщения
Показаны сообщения с ярлыком sqlserver. Показать все сообщения
воскресенье, 26 августа 2007 г.
понедельник, 9 июля 2007 г.
Как подключиться к MS SQL Server Embedded Edition
Век живи, век учись...
Оказывается, во всем утилитах для MS SQLServer 2005 при подключении к серверу БД можно вместо Server Name вводить имя named pipe. Например, это помогает подключиться к SQL Server Embedded Edition, в котором по умолчанию для standalone установки хранят свои базы SharePoint Services.
Для этого всего лишь надо в поле server name ввести "\\.\pipe\mssql$microsoft##ssee\sql\query"
В противном случае - пришлось бы ставить SQL Server Management Studio Express
Найдено тут: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=949426&SiteID=1
Оказывается, во всем утилитах для MS SQLServer 2005 при подключении к серверу БД можно вместо Server Name вводить имя named pipe. Например, это помогает подключиться к SQL Server Embedded Edition, в котором по умолчанию для standalone установки хранят свои базы SharePoint Services.
Для этого всего лишь надо в поле server name ввести "\\.\pipe\mssql$microsoft##ssee\sql\query"
В противном случае - пришлось бы ставить SQL Server Management Studio Express
Найдено тут: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=949426&SiteID=1
Подписаться на:
Сообщения (Atom)
