Oracle - 在一个结果中有更多查询

时间:2015-03-21 14:05:38

标签: sql oracle

我有四个不同的查询,我希望在同一个语句中看到所有结果(一次点击后)。我不知道。有可能吗?

1.query

    select count(*),subjekt.nazev from osoba,subjekt where   
    osoba.ID_PATRI_DO=subjekt.ID group by subjekt.nazev order by     
    subjekt.nazev;
  1. 查询

    select count(*),subjekt.nazev from ZADAVACI_POSTUP,subjekt where
    ZADAVACI_POSTUP.id_zadavatel=subjekt.ID group by subjekt.nazev order by 
    subjekt.nazev;
    
  2. 查询

    select    max(trunc(sysdate)-6) ode_dne_včetně, max(trunc(sysdate))  
    do_dne_včetně,nazev_organizace,count(*) pocet
    from(
    select to_char(t.popis) popis_typu,subj.nazev nazev_organizace,   
    u.username,u.nazev, a.datumzapisauditu   
    ,to_char(a.datumzapisauditu,'DD.MM.YYYY')  datum , a.id
    from d$caudit a
    join cuzivatel u on u.id= a.id_uzivatel
    
    join osoba os on 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
    where datumzapisauditu between trunc(sysdate)-7  AND  trunc(sysdate)
    order by  a.datumzapisauditu desc
    )
    
    由nazev_organizace组成的小组    由nazev_organizace订购    

  3. 查询

    select  sb.nazev, lg.create_uzivatel, lg.create_cas from Aplikacni_log   lg 
    join zadavaci_postup zp on zp.id = lg.id_zp
    join subjekt sb on sb.id = zp.id_zadavatel
    where lg.create_cas > to_date('08.11.2014', 'DD.MM.YYYY')
    order by sb.nazev asc
    

1 个答案:

答案 0 :(得分:1)

您可以使用UNION运算符在一个查询中获取结果。它不适合在大型设备上具有成本效益,但能够完成工作。

  • 所有查询必须选择相同数据类型的相同列数。
  • 如果查询中有唯一列,则可以选择null
  • 选择表示数据来源的字符串
  • 也很方便
  • 结果集将仅使用第一个查询的列名称
  • 排序适用于整个结果集而非单个查询

    选择计数(*)AS R_COUNT,'OSABA'AS SOURCE,subjekt.nazev,null,null,null,null

    来自osoba,subjekt

    其中osoba.ID_PATRI_DO = subjekt.ID

    group by subjekt.nazev

    UNION

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

    来自ZADAVACI_POSTUP,subjekt

    其中ZADAVACI_POSTUP.id_zadavatel = subjekt.ID

    group by subjekt.nazev

    UNION

    选择NULL,'Aplikacni_log',sb.nazev,lg.create_uzivatel,lg.create_cas,null,null

    来自Aplikacni_log lg加入zadavaci_postup zp on zp.id = lg.id_zp

    在sb.id = zp.id_zadavatel上加入subjekt sb

    其中lg.create_cas> to_date('08 .11.2014','DD.MM.YYYY')

    UNION

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

    从(

    选择to_char(t.popis)popis_typu,subj.nazev nazev_organizace,

    u.username,u.nazev,a.datumzapisauditu

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

    来自d $ caudit a

    加入cuzivatel u on u.id = a.id_uzivatel

    在u.id_osoba_bridge = os.id

    上加入osoba os

    在subj.id = os.id_patri_do

    上加入t $ subjekt subj

    在t.id = a.id_audittyp上加入d $ caudittyp t

    其中datumzapisauditu在trunc(sysdate)-7 AND trunc(sysdate)之间

    由a.datumzapisauditu desc命令 )