Problem mit SQL Join

Dieses Thema Problem mit SQL Join im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von wibni, 30. Mai 2005.

Thema: Problem mit SQL Join Hallo, ich komme bei folgenden Join nicht weiter. Die einzige richtige Abfrage ist das Resultat von INactual. Alle...

  1. Hallo,

    ich komme bei folgenden Join nicht weiter. Die einzige richtige Abfrage ist das Resultat von INactual. Alle anderen summierten Werte, also COactual, CObudget und INbudget sind ein vielfaches des Wertes was sie eigentlich sein sollten. Es scheint also so, als wird die Summe der anderen Spalten nicht nur einmal berechnet, sondern mehrfach. Wie kann ich denn des Select noch abändern? Will einfach nur die Werte aus 3 versschiedenen Tabellen....

    SELECT vmdh.txtype, vmdh.txdesc,vmdh.nmblabrdur, vmdbhd.nmblabrdur,

    SUM(vmdh.mnblabrcst+vmdh.mnbsubccst+vmdh.mnbitemcst+vmdh.mnbservcst+vmdh.mnboverhd) AS COactual,
    SUM(vmdbhd.mnblabrcst+vmdbhd.mnbsubccst+vmdbhd.mnbitemcst+vmdbhd.mnbservcst+vmdbhd.mnboverhd) AS CObudget,
    SUM(vmdtsv.mncompricf) AS INactual,
    SUM(vmdbhd.mnblabramt+vmdbhd.mnbsubcamt+vmdbhd.mnbitemamt+vmdbhd.mnbservamt)*vmdh.nmcurrrate AS INbudget

    FROM VMDBHD
    Inner JOIN VMDH ON VMDBHD.nmdocid=VMDH.nmdocid
    Inner JOIN VMDTSV ON VMDBHD.nmdocid=VMDTSV.nmdocid

    WHERE vmdh.txtype =->C04026'
    GROUP BY vmdh.txtype, vmdh.txdesc, vmdh.nmblabrdur, vmdbhd.nmblabrdur, vmdh.nmcurrrate
     
  2. Im Grunde will ich nur diese 2 Selects verbinden:

    SELECT SUM(vmdtsv.mncompricf)
    FROM VMDTSV Inner join vmdh ON VMDH.nmdocid=vmdtsv.nmdocid
    WHERE vmdh.txtype =->C04026'


    SELECT vmdh.txtype, vmdh.txdesc,vmdh.nmblabrdur, vmdbhd.nmblabrdur,
    SUM(vmdh.mnblabrcst+vmdh.mnbsubccst+vmdh.mnbitemcst+vmdh.mnbservcst+vmdh.mnboverhd) AS COactual,
    SUM(vmdbhd.mnblabrcst+vmdbhd.mnbsubccst+vmdbhd.mnbitemcst+vmdbhd.mnbservcst+vmdbhd.mnboverhd) AS CObudget,
    SUM(vmdbhd.mnblabramt+vmdbhd.mnbsubcamt+vmdbhd.mnbitemamt+vmdbhd.mnbservamt)*vmdh.nmcurrrate AS INbudget
    FROM VMDBHD
    Inner JOIN VMDH ON VMDBHD.nmdocid=VMDH.nmdocid

    WHERE vmdh.txtype =->C04026'
    GROUP BY vmdh.txtype, vmdh.txdesc, vmdh.nmblabrdur, vmdbhd.nmblabrdur, vmdh.nmcurrrate
     
  3. Hi

    Wenn du die Group bys und Sums weglässt, wieviele Datensätze kriegst du jeweils bei den 3 Abfragen?

    Gruß, Michael
     
  4. VMDH -> 1 Wert
    VMDBHD -> 1 Wert
    VMDTSV -> 37 Werte

    Wenn ich alle Werte aus den ersten beiden Tabellen durch 37 teile habe ich den richtigen Wert.
    Aber wie bastel ich nun mein Select zusammen? Es muss doch möglich sein da ein Select bauen zu können?
     
  5. Hi

    Ich glaube das sauberste wären dann ein Subselect für die VMDTSV Summe, oder du probierst sum() / count(VMDTSV.nmdocid) zu teilen. Glaube aber nicht dass es funktioniert.

    Gruß, Michael
     
  6. Ok. Habs jetzt so gemacht und es scheint zu funktionieren.
    Bin zufällig auch darauf gestossen dass es mit nen Right Join wesentlich schneller funktioniert als mit nen Inner Join. Warumm auch immer....

    SELECT vmdh.txtype, vmdh.txdesc,vmdh.nmblabrdur, vmdbhd.nmblabrdur,
    SUM(DISTINCT (vmdh.mnblabrcst+vmdh.mnbsubccst+vmdh.mnbitemcst+vmdh.mnbservcst+vmdh.mnboverhd)) AS COactual,
    SUM(DISTINCT (vmdbhd.mnblabrcst+vmdbhd.mnbsubccst+vmdbhd.mnbitemcst+vmdbhd.mnbservcst+vmdbhd.mnboverhd)) AS CObudget,
    SUM(vmdtsv.mncompricf) AS INactual,
    SUM(DISTINCT (vmdbhd.mnblabramt+vmdbhd.mnbsubcamt+vmdbhd.mnbitemamt+vmdbhd.mnbservamt))*vmdh.nmcurrrate AS INbudget
    FROM VMDBHD RIGHT JOIN (VMDH INNER JOIN VMDTSV ON VMDTSV.nmdocid=VMDH.nmdocid) ON VMDBHD.nmdocid=VMDTSV.nmdocid
    WHERE vmdh.txtype ='C04026'
    GROUP BY vmdh.txtype, vmdh.txdesc, vmdh.nmblabrdur, vmdbhd.nmblabrdur, vmdh.nmcurrrate


    Thanks...
     
Die Seite wird geladen...

Problem mit SQL Join - Ähnliche Themen

Forum Datum
Domänenjoinprobleme Windows Server-Systeme 9. Nov. 2005
SEHR DRINGEND: Probleme bei Upgrade auf Windows 7 Windows Vista Forum 13. Nov. 2016
Problem - Laptop mit angeblich win 10 und win 7 Windows 10 Forum 13. Nov. 2016
Dualboot Windows Uhrzeit Problem Windows 10 Forum 10. Nov. 2016
W10M - Glance Screen & DTTWU Probleme Windows 10 Forum 4. Nov. 2016