Wie kann ich ziehen Datensätze aus mehreren verschiedenen Tabellen in eine einzige Ansicht in SQL Server 2008 R2?

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

Frage

Ich versuche, eine Art 'Zusammenfassung' Ansicht zu erstellen, in denen Werte sollen aus mehreren verschiedenen Tabellen ([Account], [Zweig], [Kunde], [Mitarbeiter], [Transaktion], [FlaggedTrans] gezogen werden ).

Da ich nicht eine ganze Reihe von SELECT-Anweisungen in einer Ansicht tun, ich versuche, die Aufgabe zu erfüllen mit INNER JOIN, das ist, wo mein Problem liegt.

Hier ist, was ich bisher habe:

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

Scheint logisch genug, aber es alle Werte verursachen als NULL zurück zu kommen oder 0, was ich falsch tue?

War es hilfreich?

Lösung

Ich würde zunächst die CROSS Entfernen JOIN, und, wenn nötig, steckte es in eine where-Klausel (wie WHERE MY_ID IN (Select ID von Branch).

Auch Sie müssen sich nicht um die Tabellen verknüpfen, aber sie einzeln als Spalten als eine weitere Option auswählen. Hier sind einige Pseudo-Code:

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

Andere Tipps

Sie können UNION ALL verwenden, wenn Sie die Ansicht als eine ganze Reihe von wählt aufbauen wollen, wo diese einzelnen wählt nicht verwandt sind.

ich bin nicht wirklich sicher, was hier falsch ist, aber ich kann Ihnen vorschlagen, Ihre innere verbindet eins nach dem anderen, und führen Sie Ihre Auswahlabfrage zu schließen, dass die Art und Weise Sie herausfinden können innere, die verbinden das Problem verursacht

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top