Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle - mehr Abfragen in einem Ergebnis

Sie können die Ergebnisse in einer Abfrage abrufen, indem Sie den UNION-Operator verwenden. Es eignet sich nicht dazu, bei großen Sets kosteneffizient zu sein, erfüllt aber seinen Zweck.

  • Alle Abfragen müssen dieselbe Anzahl von Spalten desselben Datentyps auswählen.
  • Sie können null auswählen, wenn Sie eine eindeutige Spalte in einer Abfrage haben
  • Es ist auch praktisch, eine Zeichenfolge auszuwählen, die die Herkunft der Daten angibt
  • Die Ergebnismenge verwendet nur die Namen der Spalten der ersten Abfrage
  • Die Sortierung gilt für die gesamte Ergebnismenge, nicht für einzelne Abfragen

    select count(*) AS R_COUNT, 'OSABA' AS SOURCE,subjekt.nazev , null, null,null,null

    von osoba, Betreff

    wobei osoba.ID_PATRI_DO=subjekt.ID

    gruppieren nach subjekt.nazev

    UNION

    select count(*),'ZADAVACI_POSTUP', subjekt.nazev , null, null,null,null

    von ZADAVACI_POSTUP, Betreff

    wobei ZADAVACI_POSTUP.id_zadavatel=subjekt.ID

    gruppieren nach subjekt.nazev

    UNION

    select NULL,'Aplikacni_log', sb.nazev, lg.create_uzivatel, lg.create_cas,null,null

    von Aplikacni_log lg join zadavaci_postup zp on zp.id =lg.id_zp

    join subjekt sb on sb.id =zp.id_zadavatel

    wobei lg.create_cas> to_date('08.11.2014', 'DD.MM.YYYY')

    UNION

    select count(*) pocet,'SUBQUERY', do_dne_včetně,nazev_organizace,max(trunc(sysdate)-6) ode_dne_včetně,max(trunc(sysdate))

    von (

    select to_char(t.popis) popis_typu,subj.nazev nazev_organizace,

    u.Benutzername,u.nazev, a.datumzapisauditu

    ,to_char(a.datumzapisauditu,'DD.MM.YYYY') datum , a.id

    von d$caudit a

    cuzivatel u auf u.id=a.id_uzivatel

    beitreten

    Join osoba os auf u.id_osoba_bridge =os.id

    Join t$subjekt subj on subj.id =os.id_patri_do

    left join d$caudittyp t on t.id=a.id_audittyp

    wo datumzapisauditu zwischen trunc(sysdate)-7 UND trunc(sysdate)

    Bestellung durch a.datumzapisauditu desc)

    ;