Regions
должно быть поле StudentCount
. Но это неправильно.ALTER TABLE dbo.Regions ADD StudentCount int NULL
CREATE OR ALTER TRIGGER StudentRegionCulc ON Students AFTER INSERT, UPDATE, DELETE
AS
BEGIN
UPDATE Regions
SET StudentCount =
( SELECT COUNT(*)
FROM Students WHERE Students.Region = inserted.Region )
FROM inserted
INNER JOIN Regions ON inserted.Region = Regions.ID
UPDATE Regions
SET StudentCount =
( SELECT COUNT(*)
FROM Students WHERE Students.Region = deleted.Region )
FROM deleted
INNER JOIN Regions ON deleted.Region = Regions.ID
END
GO
Результат:SELECT ID, Region, StudentCount,
( SELECT COUNT(*)
FROM Students
WHERE Students.Region = Regions.ID ) AS StudentCountCheck
FROM Regions
CREATE TABLE [dbo].[StartFinish](
[DateStart] [datetime] NULL,
[DateFinish] [datetime] NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[StartFinish] WITH CHECK
ADD CONSTRAINT [CK_StartFinish] CHECK ((datediff(day,[DateStart],[DateFinish])>(0)))
GO
ALTER TABLE [dbo].[StartFinish] CHECK CONSTRAINT [CK_StartFinish]
GO
DECLARE @TextProduct NVARCHAR(MAX);
SELECT @TextProduct = CONCAT_WS( ', ', @TextProduct, [OrganizationCustomerId])
FROM [AZone2Adapter].[dbo].[_data_OrganizationCustomerSpecialties]
WHERE [OrganizationCustomerId]='1002775640209670'
SELECT @TextProduct AS TextProduct
Microsoft SQL Server 2008
DECLARE @TextProduct NVARCHAR(MAX);
SELECT @TextProduct = STUFF(COALESCE(', ' + @TextProduct, '')
+ COALESCE(', ' + [OrganizationCustomerId], ''), 1, 2, '')
FROM [AZone2Adapter].[dbo].[_data_OrganizationCustomerSpecialties]
WHERE [OrganizationCustomerId]='1002775640209670'
SELECT @TextProduct AS TextProduct
блокировать рекламу ЯндексаЯндекс партнёр русской Opera — в неё встроено много их сервисов, так что приходится настраивать на других (хорошо хоть есть такая возможность), периодически эти настройки сбрасываются. Понятно, что Opera никогда не будет блокировать Яндекс, даже если сделаете пользовательский список.
SELECT sys.tables.[name] AS 'TableName',
sys.columns.[name] AS 'ColumnName'
FROM sys.columns
INNER JOIN sys.tables ON sys.columns.object_id = sys.tables.object_id
WHERE sys.columns.[name] LIKE '%ID%'
ORDER BY 1, 2
WHERE 1=1 ORDER BY some_column_name DESC OFFSET 1 ROWS
Как обратится с select к объекту-таблица
DECLARE @SQL VARCHAR(MAX) = 'SELECT * FROM '
SELECT @SQL = @SQL + sys.tables.[name] FROM sys.columns
INNER JOIN sys.tables ON sys.columns.object_id = sys.tables.object_id
WHERE sys.columns.[name] = 'some_column_name'
EXECUTE( @SQL )
Task
должны быть ссылки не на User
, а на Project_User (id)
. Ведь задания создавать и выполнять могут только те, кто работает с проектом.создается чат, принадлежащий этому проектуА почему у вас наоборот? К одному чату привязаны несколько проектов.
Chat
, а в Message
должна ссылаться на Project
и Project_User (id)
. Project_User
должна быть ссылка на отдельную таблицу Role (ID, Name)
. Не надо нарушать третью нормальную форму.Chat
:ID
Name
. "Игра", например.Project
Проект, "Игра, шарики", например. Если NULL - общий. Role
Роль - групповой по роли, "Игра, шарики, тестер", например. Если NULL - общий для проекта. Если и проект NULL - общий по роли. "Игра, тестер", например. procedure TForm4.Button2Click(Sender: TObject);
var
LItem: TListViewItem;
I: Integer;
begin
for I := 1 to 10 do
begin
LItem := ListView1.Items.Add;
LItem.Text := 'Test' + IntToStr(I);
end;
end;
procedure TForm4.Button1Click(Sender: TObject);
var I: Integer;
begin
for I := 0 to ListView1.Controls.Count-1 do
if ListView1.Controls[I] is TSearchBox then
begin
TSearchBox(ListView1.Controls[I]).Text := 'Test5';
end;
end;
Файлы подключения в сети . Этот список создается из библиотеки Excel подключения к данным (DCL) на сайте Microsoft SharePoint Services.Чего у вас, понятно, нет. Поэтому не используйте "файл подключения".
Пользователи сами не смогутНастройка сохраняется в
XLSX
. То есть положите его в общую папку и он будет работать на других компьютерах сразу. Или сделайте из него шаблон, а другие пользователи будут использовать его для своих файлов.ODC
из папки %USERPROFILE%\Documents\Мои источники данных
другим, они всё равно будут импортировать данные сами. Откуда взяли торрент - в соответствующую папку и контент складывать.Большинство торрент-трекеров добавляют в название файла свою метку. По ней и устанавливать автометку и, соответственно, по ней папку.