Как я могу вытащить записи из нескольких разных таблиц в единый вид на SQL Server 2008 R2?

StackOverflow https://stackoverflow.com/questions/4158798

Вопрос

Я пытаюсь создать своего рода «сводный» вид, где значения должны быть вытянуты из нескольких разных таблиц ([учетных записей], [филиала], [клиента], [сотрудника], [транзакция], [flagedTrans]).

Поскольку я не могу сделать множество выбора утверждений в поле зрения, я пытаюсь выполнить задачу, используя внутренние присоединения, где находится моя проблема.

Вот что я получил до сих пор:

CREATE VIEW Summary
AS
    SELECT NEWID() AS Summary_Id,
    COUNT(C.Customer_Id) AS CustCount,
    COUNT(A.Account_Id) AS AcctCount,
    COUNT(T.Transaction_Id) AS TransCount,
    COUNT(B.Branch_Id) AS BranchCount,
    COUNT(E.Employee_Id) AS EmplCount,
    CAST(SUM(A.Balance) AS INT) AS BalTotal,
    COUNT(F.FlaggedTrans_Id) AS FlagCount
    FROM dbo.Account A INNER JOIN
    dbo.Customer C ON A.Customer_Id = C.Customer_Id INNER JOIN
    dbo.Employee E ON A.Employee_Id = E.Employee_Id INNER JOIN
    dbo.[Transaction] T ON A.Account_Id = T.Account_Id INNER JOIN
    dbo.FlaggedTrans F ON E.Employee_Id = F.Employee_Id CROSS JOIN
    dbo.Branch B

Кажется, достаточно логично, но это вызывает все значения, чтобы вернуться как NULL или 0. Что я делаю не так?

Это было полезно?

Решение

Я бы начал с удаления креста присоединиться и при необходимости положите его в предложение где (например, где my_id in (выберите ID из ветви).

Кроме того, вам не нужно присоединиться к таблицам, но выберите их один за другим, как столбцы как другой вариант. Вот какой-то псевдокод:

SELECT
(SELECT COUNT(thisfield) FROM Thistable) as ThisCnt,
(SELECT COUNT(thatfield) FROM Thattable) as ThatCnt,
[etc.]

Другие советы

Вы можете использовать Union All, если вы хотите построить свой просмотр в качестве множества выбора, где эти один выбор не связан.

Я не совсем уверен, что здесь не так, но я могу предложить вам закрыть свой внутренний въезд один за другим и запустить ваш выбор запроса, таким образом, вы можете понять, какое внутреннее соединение вызывает проблему

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top