Под работой вне локальной сети подразумеваются ноутбуки, которые отключаются от локальной сети и продолжают работу от модемов.И при этом могут находиться в домене.
Вот скажите может ли умереть вход для видюхи на плате. И если он умер то как себя будет вести пк?Вы так называете разъем PCI-e или AGP?
Как заставить фильтр выбирать, например, указав размер - "все", а производитель - "КЕРМА", то есть конкретный?
напишите аналогичный запрос на голом sql с подготовленным выражением
SELECT * FROM `brick` WHERE ( sz='all' OR 'all' = 'all' ) AND ( brand='КЕРМА' OR 'КЕРМА' = 'all' )
SELECT * FROM `brick` WHERE ( brand='КЕРМА' )
мне хотелось бы понять как это сделать с помощью SQLМне помогает трюк с установкой типа строки: заголовок, список, значение и пр. Для каждого типа делаете свой запрос, а потом собираете их UNION и сортируете. Пример привел, как комментарий к ответу Сергей Горностаев.
CREATE PROCEDURE FilmDetailAttributeGrid @FL INT
AS
SELECT DISTINCT
FilmAttributeGroup.Range AS RangeGroup,
1 AS Title,
FilmAttributeGroup.Name AS Name,
NULL AS Value,
NULL AS Addition,
NULL AS SearchValue,
NULL AS Person,
0 AS PersonIcon,
0 AS YearIcon,
NULL AS ID,
NULL AS ValueID,
NULL AS PersonOpen,
FilmAttributeGroup.ID AS GroupID,
'=' AS [Kind],
-1 AS [IDEdit],
-1 AS [IDDelete],
-1 AS [IDGo]
FROM FilmAttribute
INNER JOIN FilmAttributeValue ON FilmAttribute.Attribute = FilmAttributeValue.ID
INNER JOIN FilmAttributeGroup ON FilmAttributeValue.[Group] = FilmAttributeGroup.ID
WHERE (FilmAttribute.Film = @FL)
--
UNION
--
SELECT FilmAttributeGroup.Range,
0,
FilmAttributeValue.Value + ISNULL(': ' + FilmAttribute.Addition, ''),
FilmAttributeValue.Value,
FilmAttribute.Addition,
FilmAttributeValue.SearchValue,
FilmAttributeValue.Person,
ISNULL(SIGN(FilmAttributeValue.Person), 0),
SIGN((SELECT COUNT(ID) FROM FilmAttributeYear WHERE (Attribute = FilmAttribute.ID))),
FilmAttribute.ID,
FilmAttributeValue.ID,
FilmAttributeGroup.Person,
FilmAttributeGroup.ID,
'A', FilmAttribute.ID, FilmAttribute.ID, ISNULL(FilmAttributeValue.Person, -1)
FROM FilmAttribute
INNER JOIN FilmAttributeValue ON FilmAttribute.Attribute = FilmAttributeValue.ID
INNER JOIN FilmAttributeGroup ON FilmAttributeValue.[Group] = FilmAttributeGroup.ID
WHERE (FilmAttribute.Film = @FL)
--
UNION
--
SELECT DISTINCT
FilmAttributeGroup.Range,
1,
FilmAttributeGroup.Name,
NULL,
NULL,
NULL,
NULL,
0,
0,
NULL,
NULL,
NULL,
FilmAttributeGroup.ID,
'=', -1, -1, -1
FROM FilmAttribute
INNER JOIN FilmAttributeValue ON FilmAttribute.Attribute = FilmAttributeValue.ID
INNER JOIN FilmAttributeGroup ON FilmAttributeValue.[Group] = FilmAttributeGroup.ID
INNER JOIN Film ON FilmAttribute.Film = Film.Heading
WHERE (Film.ID = @FL) AND (FilmAttributeGroup.Under = 1)
--
UNION
--
SELECT FilmAttributeGroup.Range,
0,
FilmAttributeValue.Value + ISNULL(': ' + FilmAttribute.Addition, ''),
FilmAttributeValue.Value,
FilmAttribute.Addition,
FilmAttributeValue.SearchValue,
FilmAttributeValue.Person,
ISNULL(SIGN(FilmAttributeValue.Person), 0),
SIGN((SELECT COUNT(ID) FROM FilmAttributeYear WHERE (Attribute = FilmAttribute.ID))),
FilmAttribute.ID,
FilmAttributeValue.ID,
FilmAttributeGroup.Person,
FilmAttributeGroup.ID,
'=', -1, -1, -1
FROM FilmAttribute
INNER JOIN FilmAttributeValue ON FilmAttribute.Attribute = FilmAttributeValue.ID
INNER JOIN FilmAttributeGroup ON FilmAttributeValue.[Group] = FilmAttributeGroup.ID
INNER JOIN Film ON FilmAttribute.Film = Film.Heading
WHERE (Film.ID = @FL) AND (FilmAttributeGroup.Under = 1)
--
UNION
--
SELECT -6,
1,
'Год' + IIF( Premiere IS NULL, '', ' (премьера)'),
NULL,
NULL,
NULL,
NULL,
0,
0,
NULL,
NULL,
NULL,
NULL,
'=', -1, -1, -1
FROM Film
WHERE (ID = @FL) AND ( NOT [Year] IS NULL)
--
UNION
--
SELECT -6,
0,
CAST( [Year] AS VARCHAR) + ISNULL( ' (' + CONVERT( VARCHAR, Premiere, 104 ) + ')', ''),
NULL,
NULL,
NULL,
NULL,
0,
0,
NULL,
NULL,
NULL,
NULL,
'F', ID, -1, -1
FROM Film
WHERE (ID = @FL) AND ( NOT [Year] IS NULL)
--
UNION
--
SELECT -4,
1,
'Страна',
NULL,
NULL,
NULL,
NULL,
0,
0,
NULL,
NULL,
NULL,
NULL,
'=', -1, -1, -1
FROM Film
WHERE (ID = @FL) AND ( NOT [Country] IS NULL)
--
UNION
--
SELECT -4,
0,
[Country],
NULL,
NULL,
[Country],
NULL,
0,
0,
NULL,
NULL,
NULL,
NULL,
'F', ID, -1, -1
FROM Film
WHERE (ID = @FL) AND ( NOT [Country] IS NULL)
--
UNION
--
SELECT -2,
1,
'Просмотр',
NULL,
NULL,
NULL,
NULL,
0,
0,
NULL,
NULL,
NULL,
NULL,
'=', -1, -1, -1
FROM Film
WHERE (ID = @FL) AND ( [WatchDisplay] <> '' )
--
UNION
--
SELECT -2,
0,
[WatchDisplay],
NULL,
NULL,
NULL,
NULL,
0,
0,
NULL,
NULL,
NULL,
NULL,
'F', ID, -1, -1
FROM Film
WHERE (ID = @FL) AND ( [WatchDisplay] <> '' )
--
UNION
--
SELECT 999,
1,
'Сайт',
NULL,
NULL,
NULL,
NULL,
0,
0,
NULL,
NULL,
NULL,
NULL,
'=', -1, -1, -1
FROM Internet
WHERE EXISTS ( SELECT Inter.ID FROM Internet AS Inter WHERE (Inter.Kind = 'F') AND (Inter.[Object] = @FL))
--
UNION
--
SELECT 999,
0,
Name + '… ' + RIGHT(URL, 5),
URL,
NULL,
NULL,
NULL,
ISNULL(Internet.Download, 0 ) * 2,
0,
Internet.ID,
NULL,
NULL,
NULL,
'I', Internet.ID, Internet.ID, -1
FROM Internet
WHERE (Kind = 'F') AND ([Object] = @FL)
--
UNION
--
SELECT 9998,
1,
'Коды',
NULL,
NULL,
NULL,
NULL,
0,
0,
NULL,
NULL,
NULL,
NULL,
'=', -1, -1, -1
FROM Film
WHERE (ID = @FL)
--
UNION
--
SELECT 9998,
0,
'^ ' + CAST(Heading AS VARCHAR),
NULL,
NULL,
NULL,
NULL,
0,
0,
NULL,
NULL,
NULL,
NULL,
'F', Heading, -1, -1
FROM Film
WHERE (ID = @FL) AND ( NOT Heading IS NULL)
--
UNION
--
SELECT 9999,
0,
'> ' + CAST(ID AS VARCHAR),
NULL,
NULL,
NULL,
NULL,
0,
0,
NULL,
NULL,
NULL,
NULL,
'F', ID, -1, -1
FROM Film
WHERE (ID = @FL)
--
ORDER BY 1, 2 DESC, 3
Насколько быстрее денормализованная форма бд от нормализованной?Ни насколько.
1) Нормальная форма — не хранить количество денег у юзера, а вычислять их как сумму изменений по транзакциям. У юзера, допустим, 1млн транзакций. Надо сагрегировать 1млн кортежей таблицы.Чтобы иметь актуальную количество денег, нужно иметь как минимум два триггера на таблице транзакций, которые всё равно будут вычислять их как сумму изменений. И тут возникает вопрос: что важнее и, главное, быстрее список юзера (который будет кеширован) или изменение списка транзакций (при каждом — будет срабатывать триггер на общее суммирование)?
2) Денормализованная форма — хранить количество денег юзера полем у юзера. Чтобы узнать их, нужно просто вытащить один кортеж–запись юзера.