Marco: SQL-Code - brauche dringend Hilfe

Hallo,

ich habe einen SQL-Code zusammengebastelt mittels dem SQL Server Management Studio Express von Microsoft.

Brauche dieses Script um aus einer Datenbank im CCA9 (so heißt unsere Verwaltungssoftware) Daten auszuwerten.

Nun stehe ich vor dem Problem, dass mir Datensätze mehrfach ausgegeben werden (bis zu 100 mal und mehr!) was die Datenmenge explodieren lässt.

Eigentlich sollten um die 600 Datensätze ausgegeben werden, die Auswertung läuft aber unendlich weiter.

Gibt's einen Befehl mit dem man solche Mehrfachausgaben unterbinden kann?

Hier das Script zum kurzen Überblick:

SELECT     TOP (100) PERCENT CCA9_100.dbo.Vertrag.verID, CCA9_100.dbo.Vertrag.verPolizzenNr, CCA9_100.dbo.Vertrag.verProduktID,
                     CCA9_100.dbo.Vertrag.verBeginn, CCA9_100.dbo.Vertrag.verAblauf, CCA9_100.dbo.Vertrag.verJNP, CCA9_100.dbo.Vertrag.verEingereicht,
                   CCA9_100.dbo.Vertrag.verPolizziert, CCA9_100.dbo.Vertrag.verStatusID, CCA9_100.dbo.Vertrag.verArtID, CCA9_100.dbo.VertragSparte.vspID,                      CCA9_100.dbo.VertragSparte.vspTarif, CCA9_100.dbo.VertragSparte.vspBezeichnung, CCA9_100.dbo.VertragSparte.vspVariante,
                       CCA9_100.dbo.VertragSparte.vspInfo, dbo.CCA9_100_BriefAdresse.BPersNr, dbo.CCA9_100_BriefAdresse.BAnrede,
                       dbo.CCA9_100_BriefAdresse.BName, dbo.CCA9_100_BriefAdresse.BOrt, dbo.CCA9_100_BriefAdresse.AdressQualitaet,
                       dbo.CCA9_100_BriefAdresse.DuSie, dbo.CCA9_100_BriefAdresse.Name, dbo.CCA9_100_BriefAdresse.Vorname, dbo.CCA9_100_BriefAdresse.Strasse,
                       dbo.CCA9_100_BriefAdresse.PLZ, dbo.CCA9_100_BriefAdresse.Ort, dbo.CCA9_100_BriefAdresse.Kunde_seit, dbo.CCA9_100_BriefAdresse.Land,
                       dbo.CCA9_100_BriefAdresse.lndName, dbo.CCA9_100_BriefAdresse.perGebDat, dbo.CCA9_100_BriefAdresse.perEmpfZeile1,
                      dbo.CCA9_100_BriefAdresse.perEmpfZeile2, dbo.CCA9_100_BriefAdresse.perEmpfZeile3, dbo.CCA9_100_BriefAdresse.Titel,
                       dbo.CCA9_100_BriefAdresse.perAdressAnrede, dbo.CCA9_100_BriefAdresse.perBriefAnrede, CCA9_100.dbo.ZahlungsArt_T.zaText, VU.perID,
                       CCA9_100.dbo.SparteBez.spID
FROM         CCA9_100.dbo.Vertrag INNER JOIN
                       CCA9_100.dbo.VertragSparte ON CCA9_100.dbo.Vertrag.verID = CCA9_100.dbo.VertragSparte.vspVertragID INNER JOIN
                       CCA9_100.dbo.VertragTyp_T ON CCA9_100.dbo.Vertrag.verTypID = CCA9_100.dbo.VertragTyp_T.vertpID INNER JOIN
                       CCA9_100.dbo.SparteBez ON CCA9_100.dbo.Vertrag.verSparteID = CCA9_100.dbo.SparteBez.spID INNER JOIN
                       dbo.CCA9_100_BriefAdresse ON CCA9_100.dbo.Vertrag.verVNID = dbo.CCA9_100_BriefAdresse.perID INNER JOIN
                       CCA9_100.dbo.ZahlungsArt_T ON CCA9_100.dbo.Vertrag.verZahlungsArtID = CCA9_100.dbo.ZahlungsArt_T.zaID INNER JOIN
                       CCA9_100.dbo.VertragArt_T ON CCA9_100.dbo.Vertrag.verArtID = CCA9_100.dbo.VertragArt_T.vartID INNER JOIN
                       CCA9_100.dbo.ZahlungsWeiseBez ON CCA9_100.dbo.Vertrag.verZahlungsWeiseID = CCA9_100.dbo.ZahlungsWeiseBez.zwID INNER JOIN
                       CCA9_100.dbo.Person AS VU ON CCA9_100.dbo.Vertrag.verVUID = VU.perID

WHERE     (VU.perID = 11161) AND (CCA9_100.dbo.SparteBez.spID = 108)

Bitte um Info, ich brauche das dringend und sonst hat in der Firma keiner Ahnung, meine Vorgänger haben alle Unterlagen und Dokumentationen mitgenommen...

Danke im Voraus!

  1. Hello,

    *snipp* Skript mit dutzendfachen Joins *snipp*
    Bitte um Info, ich brauche das dringend und sonst hat in der Firma keiner Ahnung, meine Vorgänger haben alle Unterlagen und Dokumentationen mitgenommen...

    Du hast in deinem Befehl x-fach gejoint. Mit jedem Join multiplizierst du u.U. die Anzahl der Datensätze (lies bitte die Artikel zu Joins). Eine Pauschalantwort auf die Frage gibt es nicht, DISTINCT, GROUP BY, WHERE, viele mögliche Lösungen die von der fachlichen Anforderung des Queries abhängen, das ich jetzt bestimmt nicht auseinander nehmen werde.

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1
    1. Du hast in deinem Befehl x-fach gejoint. Mit jedem Join multiplizierst du u.U. die Anzahl der Datensätze (lies bitte die Artikel zu Joins).

      MfG
      Rouven

      danke für die schnelle Antwort, leuchtet ein...

      meine frage ist aber nun folgendes: wie kann man diese wiederholungen unterbinden, was wäre hier ein alternativbefehl zu "INNER JOIN"?

      1. Hello,

        meine frage ist aber nun folgendes: wie kann man diese wiederholungen unterbinden, was wäre hier ein alternativbefehl zu "INNER JOIN"?

        das kann man so nicht beantworten. Dazu muss man wissen, was rauskommen soll. Man kann gleiche Werte gruppieren, aber dazu muss es einen guten Grund geben, warum man das tut.

        MfG
        Rouven

        --
        -------------------
        sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
        Inter Arma Enim Silent Leges  --  Cicero