Antwort
 
Themen-Optionen Thema durchsuchen
Alt 27.01.2006, 19:57 Nach oben    #1
Benutzer
 
Benutzerbild von Guradia
 
Registriert seit: 18.08.2005
Ort: Düsseldorf
Beiträge: 57
Standard Your most abnormal Query

Da ich gerade an einer kleinen Query rumgedoktert habe, die mir einigen PHP-Code abnehmen soll .. entstand dieses dieses Machwerk:

Code:
UPDATE  auftraege,
        (
            SELECT   auftragsid
                    ,SUBSTRING(
                         GROUP_CONCAT(positionen.artikelgruppe ORDER BY artikel_wert.wert DESC)
                        ,1
                        ,LOCATE(',', GROUP_CONCAT(positionen.artikelgruppe ORDER BY artikel_wert.wert DESC)) - 1
                        ) as gruppe
            FROM    positionen 
                INNER JOIN artikel_wert
                     ON positionen.artikelgruppe = artikel_wert.gruppe
            GROUP
                 BY positionen.auftragsid ASC
        ) AS pos
         
SET   auftraege.artikelgruppe = pos.gruppe
WHERE auftraege.id = pos.auftragsid
;
Ungefährer Sinn:
> `positionen` enthält mehrere einträge zu einem Auftrag
> Eine der Positionen gilt als "Hauptartikel"
> Bestimmt wird der Hauptartikel über `artikel_wert`
> Dort ist z.b. für ein 'Bett' die Wertigkeit 100 hinterlegt, ein 'Tisch' kommt nur auf 90.
> 'Tisch' und 'Bett' sind Werte, die in `positionen.artikelgruppe` wiederzufinden sind.
> Die Artikelgruppe des Hauptartikel soll dem Auftrag zugesprochen werden. Was bei den knapp 2.000 Aufträgen im System derzeit nicht hinterlegt war.

Die Query löst das in einem Rutsch.

Ich meine .. es ist nicht das längste, aber das perverseste Stück Abfrage, das mir bislang aus den Fingern kam ...
Guradia ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.01.2006, 16:35 Nach oben    #2
Sven Schmalle
 
Benutzerbild von Sclot
 
Registriert seit: 18.08.2005
Ort: Bremen
Beiträge: 164
Standard

du willst was richtig perverses haben?

Code:
SELECT * FROM tabelle
Sclot ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.01.2006, 17:44 Nach oben    #3
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.547
Standard

... geil *g*
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.01.2006, 17:46 Nach oben    #4
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 460
Standard

Wie lange hast du dafür gebraucht?
__________________
Corvin ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.01.2006, 17:47 Nach oben    #5
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.547
Standard

Sclot? Denke nicht so lange .. bin mir aber nicht sicher ..
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.01.2006, 18:15 Nach oben    #6
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 460
Standard

Ne... Guradia.
__________________
Corvin ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.01.2006, 10:26 Nach oben    #7
Benutzer
 
Benutzerbild von Guradia
 
Registriert seit: 18.08.2005
Ort: Düsseldorf
Beiträge: 57
Standard

Zitat:
Zitat von Corvin Gröning
Ne... Guradia.
Rauszubekommen, wie ich nur den relevanten Wert aus zusammengefügten String raushole hat etwas gedauert.

Und wo ich dann die Subquery unterzubringen hatte, war nicht ganz so flott rauszubekommen.

Insgesamt hats mit wohl an die Stunde Arbeit gekostet, ber nun bin auch wieder imens schlauer als zuvor ^^
Guradia ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.01.2006, 10:58 Nach oben    #8
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 460
Standard

Eine Stunde für eine Abfrage.. oh mann

Ich würde da noch ein paar Kommentare einbauen, da blickt man ja sonst recht schnell nicht mehr durch.
__________________
Corvin ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.03.2006, 04:12 Nach oben    #9
Benutzer
 
Registriert seit: 15.02.2005
Beiträge: 33
Standard

Zitat:
Zitat von Guradia
Da ich gerade an einer kleinen Query rumgedoktert habe, die mir einigen PHP-Code abnehmen soll .. entstand dieses dieses Machwerk:

Ich meine .. es ist nicht das längste, aber das [..] das mir bislang aus den Fingern kam ...
Das nennst du das "perverste Stück Abfrage"?

Au Mann, was soll ich da erst sagen oder besser schreiben!? Meine längsten Abfragen haben schon locker an die 60-Zeilen und mehr erreicht.

Dagegen ist dein "Trum" ja ein Witz.
__________________
No Sig
Entitaet ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.03.2006, 11:37 Nach oben    #10
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.467
Standard

Zitat:
Zitat von Entitaet
Meine längsten Abfragen haben schon locker an die 60-Zeilen und mehr erreicht.
zeig doch!
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.03.2006, 19:57 Nach oben    #11
Benutzer
 
Registriert seit: 15.02.2005
Beiträge: 33
Standard

Zitat:
Zitat von Jann Hendrik
[..]
zeig doch!
Gerne, also hier eine SELECT-Abfrage, an der ich kürzlich immer wieder herumgebastelt habe. Die wahre Komplexität erschließt sich aber erst, wenn man neben der eigentlichen SELECT-Abfrage auch noch die Package-Funktionen mit abbilden würde, das aber den Rahmen hier bei weitem sprengen würde

Code:
..
         OPEN io_cur
          FOR
                SELECT distinct(nh.iidentif_snr) AS hre_id,
                       decode(o.ihierarch_stu, 1, o.ccode1, 2, o.ccode2)  AS geb_nr,
                       nh.ccode2 AS etage,
                       nh.ccode5 AS raum,
                       (select hre.cbez1 
                       from nhreinhe hre 
                       where hre.iidentif_snr = (SELECT  ifid_vati
                              FROM  nhreinhe
                              START WITH iidentif_snr = nh.iidentif_snr
                           CONNECT BY PRIOR iidentif_snr = ifid_vati)) AS raumbezeichnung,
                       nh.cbez1 AS raumzonenbez,
                       nvl(gf.ccode1,'') AS na,
                       nvl(gf.cbez1,'') AS hnf_bez,
                       nvl(gf.cbez2,'') AS rna,
                       ac_flaeuml.GET_NA_MA(nh.iidentif_snr) AS NA_MA,
                       ac_flaeuml.GET_MA(nh.iidentif_snr) AS MA,
                       ac_flaeuml.GET_FLAE_ZUO(nh.iidentif_snr) AS flae_zuo,
                       no.cbez1 AS vermieter,
                       no.ccode1 AS vermieter_wkz,
                       gk.ccode1 AS vermieter_kst,
                       ac_flaeuml.GET_MIETER(nh.iidentif_snr) AS mieter,
                       ac_flaeuml.GET_MIET_KST(nh.iidentif_snr) AS miet_kst,
                       ac_flaeuml.GET_MIETER_WKZ(nh.iidentif_snr) AS mieter_wkz,
                       round(nh.rflaeche,2) AS flaeche,
                       round(ac_flaeuml.GET_UML_FLAE(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche),2) AS uml_flae,
                       round(ac_flaeuml.GET_MIET_FLAE(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche),2) AS miet_flae,
                       ac_flaeuml.GET_MKA(nh.iidentif_snr) AS mka,
                       ac_flaeuml.GET_MKA_CBEZ2(nh.iidentif_snr) AS mka_cbez2,
                       ac_flaeuml.GET_MKA_CBEZ1(nh.iidentif_snr) AS mka_cbez1,
                       round(ac_flaeuml.GET_MIETPREIS(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche),2) AS mietpreis,
--                       round(ac_flaeuml.GET_MONATSMIETE(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche),2) AS monatsmiete,
                       round(ac_flaeuml.GET_MONATSMIETE(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche)+round(ac_flaeuml.GET_MONATSMIETE(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche)-round(ac_flaeuml.GET_MONATSMIETE(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche),3),3),2) AS monatsmiete,
--                       round(ac_flaeuml.GET_MONATSMIETE(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche)*12+round(ac_flaeuml.GET_MONATSMIETE(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche)*12-round(ac_flaeuml.GET_MONATSMIETE(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche)*12,3),3),2) AS jahresmiete,
                       decode(ac_flaeuml.EXISTS_SONDERMIETE(nh.iidentif_snr), 0, round(ac_flaeuml.GET_MONATSMIETE(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche)*12,2), 1, ac_flaeuml.GET_ROUNDED_JM(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche) ) AS jahresmiete,
--                       round(ac_flaeuml.GET_MONATSMIETE(nh.iidentif_snr, o.iidentif_snr, nh.rflaeche)*12,2) AS jahresmiete,
                       round(ac_flaeuml.GET_SONDERMIETE(nh.iidentif_snr),2) AS sondermiete,
                       decode(ac_flaeuml.GET_ZA(nh.iidentif_snr),12.0,'J',6.0,'H',3.0,'Q',1.0,'M',-1.0,'') AS za,
                       ac_flaeuml.GET_UML_ANTEIL(o.iidentif_snr) AS umlagefaktor
                FROM   zobjcost zoc, 
                       nobjekt o, 
                       norganis no, 
                       gkostel gk,
                       nhreinhe nh,
                       gflart1 gf
             where  o.iidentif_snr IN (
                                  select  iidentif_snr 
                                    from  nobjekt 
                                   where  ihierarch_stu = 2
                                          START WITH iidentif_snr = i_keynr
                                          CONNECT BY PRIOR iidentif_snr = ifid_vati)
                  and  nh.ifnobje_super = o.iidentif_snr
                  and  gk.iidentif_snr = zoc.ifgkostid_tab
                  and  gk.ifnorga_super = no.iidentif_snr
                  and  nh.ihierarch_stu = 6
                  and  nh.IFGNUTZID_TAB = gf.iidentif_snr(+)
                 order by 2,15,4,6,8;
--
--    alle sonstigen Fälle ...
--
      ELSE
         OPEN io_cur
...
__________________
No Sig
Entitaet ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.03.2006, 19:59 Nach oben    #12
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.547
Standard

*augenreib*
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.03.2006, 20:04 Nach oben    #13
Benutzer
 
Registriert seit: 15.02.2005
Beiträge: 33
Standard

Zitat:
Zitat von Ben
*augenreib*
Tja Jung, da staunste.

Nee, aber im Ernst, das sind so übliche Sachen, mit denen ich mich u.a. herumschlagen darf.

Das ganze Package (inkl. der zitierten SELECT-Abfrage) hat fast 2200 Zeilen an Code.
__________________
No Sig
Entitaet ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.03.2006, 20:09 Nach oben    #14
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.547
Standard

Zitat:
Zitat von Entitaet
Zitat:
Zitat von Ben
*augenreib*
Tja Jung, da staunste.
Joa .. das tu ich wohl.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.03.2006, 21:23 Nach oben    #15
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 460
Standard

Die Ausführung dauert dann aber auch sicher eine Weile, ne?
__________________
Corvin ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.03.2006, 21:57 Nach oben    #16
Benutzer
 
Registriert seit: 15.02.2005
Beiträge: 33
Standard

Zitat:
Zitat von Corvin Gröning
Die Ausführung dauert dann aber auch sicher eine Weile, ne?
Ja, auf meiner Maschine z. B. (Client und Server zugleich) benötigt die Abfrage ca. 25 Sekunden. Da es sich um eine Oracle-DB handelt, kann man das aber mit einigen Tricks noch locker verbessern.

Aber das ist dann schon wieder ein ganz anderes Thema.
__________________
No Sig
Entitaet ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.04.2006, 22:36 Nach oben    #17
Wikinger
 
Benutzerbild von xardias
 
Registriert seit: 02.03.2006
Ort: Aachen
Beiträge: 250
Standard

Ein Hoch auf Caching Mechanismen
xardias ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.04.2006, 13:23 Nach oben    #18
Martin Eisengardt
 
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 352
Standard

Den kann ich über, den kann ich über....
Und das ist einer meiner einfachsten

Code:
SELECT 
    Zuordnung.NR_PROFIL_ID, 
    Zuordnung.Profilart, 
    Zuordnung.NR_FKT_ID, 
    Zuordnung.NR_AUFTRAG, 
    Zuordnung.SL_AENDERUNG AS ZuordAend, 
    Zuordnung.WRT_TS_AEND AS ZuordTSAend, 
    AttWertebereich.NR_ATTRIBUT_ID, 
    AttWertebereich.AttAuftrag, 
    AttWertebereich.AttAenderung, 
    AttWertebereich.AttTSAenderung, 
    AttWertebereich.KZ_ZULAESSIG, 
    AttWertebereich.SL_WB_TYP, 
    AttWertebereich.WRT_INHALT_WB, 
    AttWertebereich.WbAuftrag, 
    AttWertebereich.WbAenderung, 
    AttWertebereich.WbTSAenderung 
FROM 
    ( 
    SELECT 
        ZuordStd.NR_PROFIL_ID, 
        'S' AS Profilart, 
        ZuordStd.NR_FKT_ID, 
        0 AS NR_AUFTRAG, 
        0 AS SL_AENDERUNG, 
        ZuordStd.WRT_TS_AEND 
    FROM 
        ( 
        SELECT 
            NR_PROFIL_ID, 
            NR_FKT_ID, 
            MAX(WRT_TS_AEND) AS WRT_TS_AEND 
        FROM T00.VNPT1045 
        WHERE NR_PROFIL_ID IN (10001, 10004, 10005, 10008, 10010, 10013, 10014, 10020) 
        GROUP BY NR_PROFIL_ID, 
            NR_FKT_ID
        ) AS tmp0 
    INNER JOIN 
        T00.VNPT1045 ZuordStd 
        ON tmp0.NR_PROFIL_ID=ZuordStd.NR_PROFIL_ID 
        AND tmp0.NR_FKT_ID=ZuordStd.NR_FKT_ID 
        AND tmp0.WRT_TS_AEND=ZuordStd.WRT_TS_AEND 
    WHERE ZuordStd.SL_AENDERUNG <> 4 
    UNION 
    SELECT 
        COALESCE(ZuordBankP.NR_PROFIL_ID, ZuordBankH.NR_PROFIL_ID) AS NR_PROFIL_ID, 
        'B' AS Profilart, 
        COALESCE(ZuordBankP.NR_FKT_ID, ZuordBankH.NR_FKT_ID) AS NR_FKT_ID, 
        COALESCE(ZuordBankP.NR_AUFTRAG, 0) AS NR_AUFTRAG, 
        COALESCE(ZuordBankP.SL_AENDERUNG, 0) AS SL_AENDERUNG, 
        COALESCE(ZuordBankP.WRT_TS_AEND, ZuordBankH.WRT_TS_FREIGABE) AS WRT_TS_AEND 
    FROM 
        ( 
        SELECT 
            Planung.NR_PROFIL_ID, 
            Planung.NR_AUFTRAG, 
            Planung.NR_FKT_ID, 
            Planung.SL_AENDERUNG, 
            Planung.WRT_TS_AEND 
        FROM T00.VNPT1030 Planung 
        WHERE Planung.RZBK = 8844 
            AND Planung.NR_PROFIL_ID IN (10001, 10004, 10005, 10008, 10010, 10013, 10014, 10020)
        ) 
        ZuordBankP 
    FULL OUTER JOIN 
        ( 
        SELECT 
            Historie.NR_PROFIL_ID, 
            Historie.NR_AUFTRAG, 
            Historie.NR_FKT_ID, 
            Historie.SL_AENDERUNG, 
            Historie.WRT_TS_FREIGABE 
        FROM 
            (
            SELECT 
                * 
            FROM T00.VNPT1044 
            WHERE RZBK = 8844
            ) 
            Historie 
        INNER JOIN 
            ( 
            SELECT 
                RZBK, 
                NR_PROFIL_ID, 
                NR_FKT_ID, 
                MAX(WRT_TS_FREIGABE) WRT_TS_FREIGABE 
            FROM T00.VNPT1044 
            WHERE RZBK = 8844 
                AND NR_PROFIL_ID IN (10001, 10004, 10005, 10008, 10010, 10013, 10014, 10020) 
            GROUP BY RZBK, 
                NR_PROFIL_ID, 
                NR_FKT_ID 
            ) 
            tmp1 
            ON Historie.RZBK=tmp1.RZBK 
            AND Historie.NR_PROFIL_ID=tmp1.NR_PROFIL_ID 
            AND Historie.NR_FKT_ID=tmp1.NR_FKT_ID 
            AND Historie.WRT_TS_FREIGABE=tmp1.WRT_TS_FREIGABE 
        WHERE Historie.SL_AENDERUNG<>4 
        ) 
        ZuordBankH 
        ON ZuordBankP.NR_PROFIL_ID = ZuordBankH.NR_PROFIL_ID 
        AND ZuordBankP.NR_FKT_ID = ZuordBankH.NR_FKT_ID 
    ) 
    Zuordnung 
LEFT OUTER JOIN 
    ( 
    SELECT 
        Attribut.NR_PROFIL_ID, 
        Attribut.NR_FKT_ID, 
        Attribut.NR_ATTRIBUT_ID, 
        Attribut.SL_AENDERUNG AS AttAenderung, 
        Attribut.WRT_TS_AEND AS AttTSAenderung, 
        Attribut.NR_AUFTRAG AS AttAuftrag, 
        Wertebereich.KZ_ZULAESSIG, 
        Wertebereich.SL_WB_TYP, 
        Wertebereich.WRT_INHALT_WB, 
        Wertebereich.NR_AUFTRAG AS WbAuftrag, 
        Wertebereich.SL_AENDERUNG AS WbAenderung, 
        Wertebereich.WRT_TS_AEND AS WbTSAenderung 
    FROM 
        ( 
        SELECT 
            COALESCE(ZuordAttP.NR_PROFIL_ID, ZuordAttH.NR_PROFIL_ID) AS NR_PROFIL_ID, 
            COALESCE(ZuordAttP.NR_FKT_ID, ZuordAttH.NR_FKT_ID) AS NR_FKT_ID, 
            COALESCE(ZuordAttP.NR_ATTRIBUT_ID, ZuordAttH.NR_ATTRIBUT_ID) AS NR_ATTRIBUT_ID, 
            COALESCE(ZuordAttP.SL_AENDERUNG, 0) AS SL_AENDERUNG, 
            COALESCE(ZuordAttP.WRT_TS_AEND, ZuordAttH.WRT_TS_FREIGABE) AS WRT_TS_AEND, 
            COALESCE(ZuordAttP.NR_AUFTRAG, ZuordAttH.NR_AUFTRAG) AS NR_AUFTRAG 
        FROM 
            ( 
            SELECT 
                Planung.NR_PROFIL_ID, 
                Planung.NR_FKT_ID, 
                Planung.NR_ATTRIBUT_ID, 
                Planung.SL_AENDERUNG, 
                Planung.WRT_TS_AEND, 
                Planung.NR_AUFTRAG 
            FROM T00.VNPT1036 Planung 
            WHERE Planung.RZBK = 8844 
                AND Planung.NR_STELLEN_ID = 0 
                AND Planung.NR_PROFIL_ID IN (10001, 10004, 10005, 10008, 10010, 10013, 10014, 10020) 
            ) 
            ZuordAttP 
        FULL OUTER JOIN 
            ( 
            SELECT 
                Historie.NR_PROFIL_ID, 
                Historie.NR_FKT_ID, 
                Historie.NR_ATTRIBUT_ID, 
                Historie.SL_AENDERUNG, 
                Historie.WRT_TS_FREIGABE, 
                Historie.NR_AUFTRAG 
            FROM 
                (
                SELECT 
                    * 
                FROM T00.VNPT1052 
                WHERE RZBK = 8844
                ) 
                Historie 
            INNER JOIN 
                ( 
                SELECT 
                    RZBK, 
                    NR_PROFIL_ID, 
                    NR_FKT_ID, 
                    NR_ATTRIBUT_ID, 
                    MAX(WRT_TS_FREIGABE) WRT_TS_FREIGABE 
                FROM T00.VNPT1052 
                WHERE RZBK = 8844 
                    AND NR_STELLEN_ID = 0 
                    AND NR_PROFIL_ID IN (10001, 10004, 10005, 10008, 10010, 10013, 10014, 10020) 
                GROUP BY RZBK, 
                    NR_PROFIL_ID, 
                    NR_FKT_ID, 
                    NR_ATTRIBUT_ID 
                ) 
                tmp2 
                ON Historie.RZBK=tmp2.RZBK 
                AND Historie.NR_PROFIL_ID=tmp2.NR_PROFIL_ID 
                AND Historie.NR_FKT_ID=tmp2.NR_FKT_ID 
                AND Historie.NR_ATTRIBUT_ID=tmp2.NR_ATTRIBUT_ID 
                AND Historie.WRT_TS_FREIGABE=tmp2.WRT_TS_FREIGABE 
            WHERE Historie.SL_AENDERUNG<>4 
            ) 
            ZuordAttH 
            ON ZuordAttP.NR_PROFIL_ID = ZuordAttH.NR_PROFIL_ID 
            AND ZuordAttP.NR_FKT_ID = ZuordAttH.NR_FKT_ID 
            AND ZuordAttP.NR_ATTRIBUT_ID = ZuordAttH.NR_ATTRIBUT_ID 
        ) 
        Attribut 
    INNER JOIN 
        ( 
        SELECT 
            COALESCE(AttWbP.NR_PROFIL_ID, AttWbH.NR_PROFIL_ID) AS NR_PROFIL_ID, 
            COALESCE(AttWbP.NR_FKT_ID, AttWbH.NR_FKT_ID) AS NR_FKT_ID, 
            COALESCE(AttWbP.NR_ATTRIBUT_ID, AttWbH.NR_ATTRIBUT_ID) AS NR_ATTRIBUT_ID, 
            COALESCE(AttWbP.NR_AUFTRAG, AttWbH.NR_AUFTRAG) AS NR_AUFTRAG, 
            COALESCE(AttWbP.KZ_ZULAESSIG, AttWbH.KZ_ZULAESSIG) AS KZ_ZULAESSIG, 
            COALESCE(AttWbP.SL_WB_TYP, AttWbH.SL_WB_TYP) AS SL_WB_TYP, 
            COALESCE(AttWbP.WRT_INHALT_WB, AttWbH.WRT_INHALT_WB) AS WRT_INHALT_WB, 
            COALESCE(AttWbP.SL_AENDERUNG, 0) AS SL_AENDERUNG, 
            COALESCE(AttWbP.WRT_TS_AEND, AttWbH.WRT_TS_FREIGABE) AS WRT_TS_AEND 
        FROM 
            ( 
            SELECT 
                Planung.NR_PROFIL_ID, 
                Planung.NR_FKT_ID, 
                Planung.NR_ATTRIBUT_ID, 
                Planung.NR_AUFTRAG, 
                Planung.KZ_ZULAESSIG, 
                Planung.SL_WB_TYP, 
                Planung.WRT_INHALT_WB, 
                Planung.SL_AENDERUNG, 
                Planung.WRT_TS_AEND 
            FROM T00.VNPT1037 Planung 
            WHERE Planung.RZBK = 8844 
                AND Planung.NR_STELLEN_ID = 0 
                AND Planung.NR_PROFIL_ID IN (10001, 10004, 10005, 10008, 10010, 10013, 10014, 10020) 
            ) 
            AttWbP 
        FULL OUTER JOIN 
            ( 
            SELECT 
                Historie.NR_PROFIL_ID, 
                Historie.NR_FKT_ID, 
                Historie.NR_ATTRIBUT_ID, 
                Historie.NR_AUFTRAG, 
                Historie.KZ_ZULAESSIG, 
                Historie.SL_WB_TYP, 
                Historie.WRT_INHALT_WB, 
                Historie.SL_AENDERUNG, 
                Historie.WRT_TS_FREIGABE 
            FROM 
                (
                SELECT 
                    * 
                FROM T00.VNPT1053 
                WHERE RZBK = 8844
                ) 
                Historie 
            INNER JOIN 
                (
                SELECT 
                    RZBK, 
                    NR_PROFIL_ID, 
                    NR_FKT_ID, 
                    NR_ATTRIBUT_ID, 
                    MAX(WRT_TS_FREIGABE) WRT_TS_FREIGABE 
                FROM T00.VNPT1053 
                WHERE RZBK = 8844 
                    AND NR_STELLEN_ID = 0 
                    AND NR_PROFIL_ID IN (10001, 10004, 10005, 10008, 10010, 10013, 10014, 10020) 
                GROUP BY RZBK, 
                    NR_PROFIL_ID, 
                    NR_FKT_ID, 
                    NR_ATTRIBUT_ID 
                ) 
                tmp3 
                ON Historie.RZBK=tmp3.RZBK 
                AND Historie.NR_PROFIL_ID=tmp3.NR_PROFIL_ID 
                AND Historie.NR_FKT_ID=tmp3.NR_FKT_ID 
                AND Historie.NR_ATTRIBUT_ID=tmp3.NR_ATTRIBUT_ID 
                AND Historie.WRT_TS_FREIGABE=tmp3.WRT_TS_FREIGABE 
            WHERE Historie.NR_STELLEN_ID = 0 
                AND Historie.SL_AENDERUNG<>4 
            ) 
            AttWbH 
            ON AttWbP.NR_PROFIL_ID = AttWbH.NR_PROFIL_ID 
            AND AttWbP.NR_FKT_ID = AttWbH.NR_FKT_ID 
            AND AttWbP.NR_ATTRIBUT_ID = AttWbH.NR_ATTRIBUT_ID 
        ) 
        Wertebereich 
        ON Attribut.NR_PROFIL_ID = Wertebereich.NR_PROFIL_ID 
        AND Attribut.NR_FKT_ID = Wertebereich.NR_FKT_ID 
        AND Attribut.NR_ATTRIBUT_ID = Wertebereich.NR_ATTRIBUT_ID 
    ) 
    AttWertebereich 
    ON Zuordnung.NR_PROFIL_ID = AttWertebereich.NR_PROFIL_ID 
    AND Zuordnung.NR_FKT_ID = AttWertebereich.NR_FKT_ID 
ORDER BY 1, 
    3, 
    7
mepeisen ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.04.2006, 21:07 Nach oben    #19
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 564
Standard

lawl....

.::FREAKZ::.

aber das von entitaet sieht auf den ersten blick erstmal komplizierter aus als das von mepeisen...
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.04.2006, 22:54 Nach oben    #20
...möp...
 
Benutzerbild von Creativ
 
Registriert seit: 10.10.2005
Ort: Wolfsburg
Beiträge: 80
Standard

lol...und ich finde meine kleinen querys schwer^^

Verdrehe auch immer Inner Join usw.^^
Creativ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
query umschreiben nibblas Datenbanken 5 04.07.2007 16:41
PDO Query limit ex³ PHP-Programmierung 3 10.03.2007 08:37
Auslesen zweier verschiedener Datensätze in einem Query (mySQL) Chr!s Datenbanken 8 14.11.2006 19:57
MySQL Fehlermeldung: Your query requires a full tablescan ... Chr!s Datenbanken 12 31.07.2006 21:45
Query verbessern? björn Datenbanken 4 05.06.2006 13:48


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:02 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45