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

Откуда:
Сообщений: 58
всем привет, можете помочь, пытаюсь вывести определенные данные из 2 временных таблиц, но я новичок и не понимаю что не так, и второй вопрос вывод поля Message отображается закрытым с надписью (Excluded), после того как мышью щелкаешь - открывается и вид нормальный:
DECLARE @ErrorsTableDenis TABLE (ErrorID INT, [Message] TEXT COLLATE Cyrillic_General_CI_AS NULL PRIMARY KEY (ErrorID))
INSERT @ErrorsTableDenis
SELECT ErrorID, [Message] FROM LastErrors as x INNER JOIN (SELECT TerminalID FROM Terminals) as y ON x.TerminalID = Y.TerminalID
SELECT
X.ErrorID,
X.[Message],
Y.TerminalID,
Y.EventDateTime,
Y.ErrorCode,
Y.DeviceType,
Y.DeviceNumber,
Y.Description,
Y.Weight
FROM
@ErrorsTableDenis as X
LEFT JOIN (
SELECT
Errors.ErrorID,
Errors.TerminalID,
Errors.EventDateTime,
Errors.ErrorCode,
Errors.DeviceType,
Errors.DeviceNumber,
(SELECT [Description] FROM TerminalErrorCodes WHERE TerminalErrorCodes.ErrorCode = Errors.ErrorCode) AS [Description],
(SELECT [Weight] FROM TerminalErrorCodes WHERE TerminalErrorCodes.ErrorCode = Errors.ErrorCode) AS [Weight]
FROM
Errors
) as Y
ON X.ErrorID = Y.ErrorID
WHERE
Y.TerminalID IS NOT NULL AND Y.DeviceType != 7 AND X.[Message] IS NOT NULL
ORDER BY DeviceType, DeviceNumber

отображает как скрине 1

а еще пытаюсь этот же запрос объединить с еще одной табличкой временной и вывести данные:
with device as
(select '1' DeviceType, 'Printer' Device union all
select '2', 'Validator' union all select '3', 'Dog' union all
select '4', 'Version' union all
select '11', 'Updater' union all select '14', 'CoinAcceptor')

DECLARE @ErrorsTableDenis TABLE (ErrorID INT, [Message] TEXT COLLATE Cyrillic_General_CI_AS NULL PRIMARY KEY (ErrorID))
INSERT @ErrorsTableDenis
SELECT ErrorID, [Message] FROM LastErrors as x INNER JOIN (SELECT TerminalID FROM Terminals) as y ON x.TerminalID = Y.TerminalID
SELECT
X.ErrorID,
X.[Message],
Y.TerminalID,
Y.EventDateTime,
Y.ErrorCode,
Y.DeviceType,
Y.DeviceNumber,
Y.Description,
Y.Weight
d.device
FROM
@ErrorsTableDenis as X
LEFT JOIN (
SELECT
Errors.ErrorID,
Errors.TerminalID,
Errors.EventDateTime,
Errors.ErrorCode,
Errors.DeviceType,
Errors.DeviceNumber,
(SELECT [Description] FROM TerminalErrorCodes WHERE TerminalErrorCodes.ErrorCode = Errors.ErrorCode) AS [Description],
(SELECT [Weight] FROM TerminalErrorCodes WHERE TerminalErrorCodes.ErrorCode = Errors.ErrorCode) AS [Weight]
FROM
Errors
) as Y
ON X.ErrorID = Y.ErrorID
inner join device d on d.devicetype = y.devicetype
WHERE
Y.TerminalID IS NOT NULL AND Y.DeviceType != 7 AND X.[Message] IS NOT NULL
ORDER BY DeviceType, DeviceNumber

SQL Server Database Error: Incorrect syntax near the keyword 'DECLARE'.

К сообщению приложен файл. Размер - 67Kb
16 окт 12, 17:39    [13328559]     Ответить | Цитировать Сообщить модератору
 Re: объединение и вывод  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6727
+ Чтобы глаза не ломать
dolf85
всем привет, можете помочь, пытаюсь вывести определенные данные из 2 временных таблиц, но я новичок и не понимаю что не так, и второй вопрос вывод поля Message отображается закрытым с надписью (Excluded), после того как мышью щелкаешь - открывается и вид нормальный:
DECLARE @ErrorsTableDenis TABLE (ErrorID INT, [Message] TEXT COLLATE Cyrillic_General_CI_AS NULL PRIMARY KEY (ErrorID))
INSERT @ErrorsTableDenis
    SELECT ErrorID, [Message] FROM LastErrors as x INNER JOIN (SELECT TerminalID FROM Terminals) as y ON x.TerminalID = Y.TerminalID
SELECT
                X.ErrorID,
                X.[Message],
                Y.TerminalID,
                Y.EventDateTime,
                Y.ErrorCode,
                Y.DeviceType,
                Y.DeviceNumber,
                Y.Description,
                Y.Weight
        FROM
                @ErrorsTableDenis as X
                LEFT JOIN (
                        SELECT
                                Errors.ErrorID,
                                Errors.TerminalID,
                                Errors.EventDateTime,
                                Errors.ErrorCode,
                                Errors.DeviceType,
                                Errors.DeviceNumber,
                                (SELECT [Description] FROM TerminalErrorCodes WHERE TerminalErrorCodes.ErrorCode = Errors.ErrorCode) AS [Description],
                                (SELECT [Weight] FROM TerminalErrorCodes WHERE TerminalErrorCodes.ErrorCode = Errors.ErrorCode) AS [Weight]
                        FROM
                                Errors
                ) as Y
                ON X.ErrorID = Y.ErrorID
        WHERE
                Y.TerminalID IS NOT NULL AND Y.DeviceType != 7 AND X.[Message] IS NOT NULL
        ORDER BY DeviceType, DeviceNumber

отображает как скрине 1

а еще пытаюсь этот же запрос объединить с еще одной табличкой временной и вывести данные:
with device as
(select '1' DeviceType, 'Printer' Device union all 
select '2', 'Validator' union all select '3', 'Dog' union all
select '4', 'Version' union all
select '11', 'Updater' union all select '14', 'CoinAcceptor')
 
DECLARE @ErrorsTableDenis TABLE (ErrorID INT, [Message] TEXT COLLATE Cyrillic_General_CI_AS NULL PRIMARY KEY (ErrorID))
INSERT @ErrorsTableDenis
    SELECT ErrorID, [Message] FROM LastErrors as x INNER JOIN (SELECT TerminalID FROM Terminals) as y ON x.TerminalID = Y.TerminalID
SELECT
                X.ErrorID,
                X.[Message],
                Y.TerminalID,
                Y.EventDateTime,
                Y.ErrorCode,
                Y.DeviceType,
                Y.DeviceNumber,
                Y.Description,
                Y.Weight
                d.device
        FROM
                @ErrorsTableDenis as X
                LEFT JOIN (
                        SELECT
                                Errors.ErrorID,
                                Errors.TerminalID,
                                Errors.EventDateTime,
                                Errors.ErrorCode,
                                Errors.DeviceType,
                                Errors.DeviceNumber,
                                (SELECT [Description] FROM TerminalErrorCodes WHERE TerminalErrorCodes.ErrorCode = Errors.ErrorCode) AS [Description],
                                (SELECT [Weight] FROM TerminalErrorCodes WHERE TerminalErrorCodes.ErrorCode = Errors.ErrorCode) AS [Weight]
                        FROM
                                Errors
                ) as Y
                ON X.ErrorID = Y.ErrorID
                inner join device d on d.devicetype = y.devicetype
        WHERE
                Y.TerminalID IS NOT NULL AND Y.DeviceType != 7 AND X.[Message] IS NOT NULL
        ORDER BY DeviceType, DeviceNumber

SQL Server Database Error: Incorrect syntax near the keyword 'DECLARE'.
16 окт 12, 17:46    [13328630]     Ответить | Цитировать Сообщить модератору
 Re: объединение и вывод  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6727
dolf85
второй вопрос вывод поля Message отображается закрытым с надписью (Excluded), после того как мышью щелкаешь - открывается и вид нормальный
Это к разработчикам того клиента которым вы пользуетесь. MSSQL тут не причём.
Ну и вопрос ясельного возраста.

dolf85
SQL Server Database Error: Incorrect syntax near the keyword 'DECLARE'.
Изучайте синтаксис.
CTE это цельная конструкция, нельзя в середину вляпать что-то левое (DELARE переменных, к примеру).
16 окт 12, 17:51    [13328685]     Ответить | Цитировать Сообщить модератору
 Re: объединение и вывод  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Mnior, ну уже б и поставил точку с запятой и перенес декларе выше , чего уж там..если поформатировал
16 окт 12, 17:53    [13328702]     Ответить | Цитировать Сообщить модератору
 Re: объединение и вывод  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6727
Ай, вы же банально искать не умеете.

CTE.
16 окт 12, 17:55    [13328722]     Ответить | Цитировать Сообщить модератору
 Re: объединение и вывод  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6727
Maxx
если поформатировал
Форматировал?
Делать мне нечего. Fast repost с выключенными мозгами.
16 окт 12, 17:57    [13328735]     Ответить | Цитировать Сообщить модератору
 Re: объединение и вывод  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Mnior,

ну я не знакл кто у вас там ето делал код читабельный привели именно вы
16 окт 12, 18:02    [13328783]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить