Jump to content
php.lv forumi

2 count in 1 qurey


martinssss

Recommended Posts

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

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

×
×
  • Create New...