martinssss Posted November 6, 2008 Report Share Posted November 6, 2008 Sveiki, kā ir iespējams vienā sql pieprasījumā izpildīt 2 pierasījumus no dazādām tabulām, ja atlases kritēriji ir vienādi : SELECT BRANCH_ID as "Vieta", COUNT (user_id)as "lietotajia" FROM tabula1 --FROM tabula2 WHERE PIESL_DATE >= TO_DATE('01.11.2008','DD.MM.YYYY') AND PIESL_DATE <= TO_DATE('30.11.2008','DD.MM.YYYY') GROUP BY BRANCH_ID; Seit rezultats bus vieta|lietotajia bet veletos iegut vieta|lietotajia|lietotajib ņemot vērā ka vienā tabulā pie branch_id x varbūt 10 lietotāi, bet otrā tabulā 0 Link to comment Share on other sites More sharing options...
Java Posted November 6, 2008 Report Share Posted November 6, 2008 (edited) ....... COUNT(t1.user_id) as uid_count1, COUNT(t2.user_id) as uid_count2 FROM tabula1 t1, tabula2 t2 WHERE ........ Edited November 6, 2008 by Java Link to comment Share on other sites More sharing options...
bubu Posted November 6, 2008 Report Share Posted November 6, 2008 Tur nesanāks ārprātīgs darbs datubāzei? Pilnu dekarta reizinājumu taisīt.. Link to comment Share on other sites More sharing options...
Gints Plivna Posted November 6, 2008 Report Share Posted November 6, 2008 Problēma ir iekš tā, ka vispārīgā gadījumā (ja vien tev nav kādi īpaši nosacījumi) dati var būt tādi ka vienā tabulā ir ierakstie vienām vietām (branch), piemēram, 1, 2, 3, bet otrā tabulā pavisam citām, 3, 4, 5. Kur vietu kopas nešķeļas vai šķeļas tikai daļēji. Pieņemot, ka Tev ir MySQL (ko gan vajadzētu pierakstīt pirms jautā), tajā diemžēl nav FULL OUTER JOINA tāpēc viegli un eleganti būs grūti tikai no šīm divām tabulām dabūt šitādu rezultātu: vieta skaits1 skaits2 1 2 0 2 2 0 3 2 2 4 0 2 5 0 2 Tāpēc lai no tā izvairītos vajag kaut kādā veidā dabūt visus branchus (jādomā ka Tev ir atsevišķa tabula), tad tos left outer joinā savienot ar tabula1, kurā saskaitīti ieraksti un left outer joinā ar tabulu2, kurā saskaitīti ieraksti. Ja gribās pēc tam var atfiltrēt tos branchus, kur abiem skaits ir 0. Vēl protams var dabūt visus branchus kā BRANCH_ID FROM tabula 1 UNION BRANCH_ID from tabula2 bet tas varētu nebūt mērķis, jo it kā tizli vairākas reizes lasīt vienas un tās pašas tabulas. Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
Recommended Posts