Common Table Expression, Sub-Query

Ich würde bitten, für Hilfe zu verstehen, die alle RDBMS von Oracle -, DB2 -, Sybase-Unterstützung (common table expression, CTE), die in einer sub-Abfrage. Ich bin mir bewusst, dass PostgreSQL nicht während der MS SQL Server nicht.

SELECT a.*, b.* 
 FROM (WHERE aa as (
          <<select_query>),
          SELECT * 
            FROM aa
           WHERE <<criteria>>
    ) as a
    LEFT JOIN (
        WITH bb as (
            <<select_query>
        ),
        select * from bb inner join tbl_c on <<innerjoin>> where <<criteria>>
    ) as b
    on <<join_expr>>

Ich bin nicht in der Lage zu definieren, die mit der Klausel, die außerhalb der sub-Abfragen - sowohl die Abfragen sind dynamisch generierte w.r.t. die Spalten, die Kriterien, Sicherheit, etc.
Auch die obige Abfrage selbst verwendet werden können, in einer anderen Abfrage als eine sub-Abfrage.
In Zusammenfassung, das Prinzip ist dynamisch generierte Ansichten, re-usable später. Einige Abfragen haben bis zu 10-12 solchen dynamischen Ansichten zusammengeführt werden, wie gut.
Das problem ist, dass die Anwendung sein soll ist Datenbank-agnostisch, zumindest so weit wie PG, Oracle & DB2 betroffen sind und Funktionen, die nicht unterstützt sind, nicht umgesetzt.

  • Oracle nennt es "subquery factoring", und es verwenden, um zu definieren, innerhalb einer Unterabfrage erscheint mir als eine schlechte Wahl. Je höher, desto breiter ist der Umfang zu nutzen.
InformationsquelleAutor Kapil | 2011-07-25
Schreibe einen Kommentar