Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Zwei Abfragen zu einer Verbinden

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von JudAD, 4 Mai 2016.

  1. JudAD

    JudAD Fleissiger Benutzer

    Hallo,

    leider verzweifel ich beim Verknüpfen zweier Abfragen zu einer. Ich habe 2 Abfragen (1&2) die ich gerne über ein left join zu einer Abfrage verküpfen würde. Leider klappt das nicht, sodass ich das ganze über temporäre Tabellen gelöst habe. Leider habe ich aber das Problem, dass ich in der Anwendung die das Script ausführen soll keine Möglichkeit habe mit into Tabellen anzulegen. Irgendwie muss es doch möglich sein diese Abfragen zu einer zu verbinden. Wenn ich die 3 Abfragen im SQL-Management Studio ausführe erhalte ich 2 Datensätze als Ergebnis, wobei bei einem Datensatz die Felder von der Abfrage2 NULL enthalten, was auch wegen dem left join korrekt ist. Wenn ich diese Abfragen versuche zu verbinden (siehe letzte Abfrage), erhalte ich aber immer nur einen Datensatz, und mein left join wird scheinbar ignoriert.

    Für ein SQL Profi ist das sicher ein klacks - aber ich stehe irgendwie auf dem Schlauch.

    Über eine Lösung würde ich mich sehr freuen

    Danke

    Tayfun

    1. Abfrage
    select OITM.ItemCode as SysNr, OITM.OnHand as Bestand, OITM.U_mindbest as MinBest
    into tt1
    from OITM
    where U_KundenNr = '11971' and OnHand < U_mindbest and (U_mindbest != NULL or U_mindbest != 0)

    2. Abfrage
    select beas_ftpos.itemcode as SysNr, SUM(beas_ftpos.menge) as InFA, SUM(beas_ftpos.gel_menge) as Fertig
    into tt2
    from OITM
    join beas_ftpos on beas_ftpos.itemcode = OITM.ItemCode
    where beas_ftpos.abgkz = 'N' and beas_ftpos.belpos_id = 10 and beas_ftpos.stufe = 0 and OITM.U_KundenNr = '11971'
    Group by beas_ftpos.itemcode

    3. Abfrage
    select tt1.*, tt2.InFA, tt2.Fertig
    from tt1
    left join tt2 on tt1.SysNr = tt2.SysNr
    order by tt1.SysNr

    Und das war mein Versuch zu Verbinden:

    select OITM.ItemCode as SysNr, OITM.OnHand as Bestand, OITM.U_mindbest as MinBest, SUM(beas_ftpos.menge) as InFA, SUM(beas_ftpos.gel_menge) as Fertig
    from OITM
    left join beas_ftpos on beas_ftpos.itemcode = OITM.ItemCode
    where (beas_ftpos.abgkz = 'N' and beas_ftpos.belpos_id = 10 and beas_ftpos.stufe = 0) and OITM.U_KundenNr = '11971' and OnHand < U_mindbest and (U_mindbest != NULL or U_mindbest != 0)
    Group by OITM.ItemCode, OITM.OnHand, OITM.U_mindbest
    order by OITM.ItemCode
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Du kannst prinzipiell dort, wo du in deiner dritten Abfrage auf tt1 bzw. tt2 verweist, auch in Klammer das Select schreiben, also etwa:

    select tt1.*, tt2.InFA, tt2.Fertig from (hier die erste Abfrage) as tt1 left join (hier die zweite Abfrage) as tt2 on ...
     
    JudAD gefällt das.
  3. JudAD

    JudAD Fleissiger Benutzer

    Hallo & vielen Dank für die schnelle hilfe!!!

    Kaum macht man es richtig schon funktioniert es!
     
    ukulele und akretschmer gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden