webForumDet fria alternativet

Sql sats, flera counts?

6 svar · 340 visningar · startad av MrTerm

MrTermMedlem sedan feb. 20094 inlägg
#1

Hej!
Var ett tag sedan jag satt med sql satser. Detta är mot en mysql 5.

Problemet är att jag vill plocka hur många BSPid det är som har fler än, Count(tblInvoice.invCID) > 1.

Dvs sql satsen nedan är korrekt, men jag vill även få in så den bara räknar på de som har Count(tblInvoice.invCID) > 1

SELECT count(BSPid) as countBS FROM tblBSCustomer, tblInvoice, tblCustomer WHERE tblInvoice.invStatus>0 AND tblInvoice.invCID=tblCustomer.CID AND tblBSCustomer.BSPid=tblCustomer.CPID AND MONTH(tblInvoice.invDtm)="& Month(now()) &""

Tack så jättemycket på förhand.

/Janne

LarsGMedlem sedan dec. 200012 465 inlägg
#2

Jag förstår inte vad du menar med

Problemet är att jag vill plocka hur många BSPid det är som har fler än, Count(tblInvoice.invCID) > 1.

Ge exempel på datainnehåll coh förväntat resultat.

MrTermMedlem sedan feb. 20094 inlägg
#3

Tack för extremt snabbt svar.

Ska försöka förklara hur det fungerar.

Jag vill få ut en siffra ur sql satsen.

tblBSCustomer.BSPid är ett personnummer.
tblCustomer.CPID är även det ett personnummer.
tblInvoice.invCID har samma värde som tblCustomer.CID
tblBSCustomer.BSPid har samma värde som tblCustomer.CPID

Count(tblInvoice.invCID) > 1 räknar om det finns mer fakturor på detta invCID.

Så igentligen räknar sql satsen ut hur många tblBSCustomer.BSPid som har Count(tblInvoice.invCID) > 1.

Så från detta presenteras bara en siffra.

Om jag ger förvirrande information, säg till!

effataMedlem sedan apr. 2008141 inlägg
#4

Jag skulle tro att du behöver en eller flera subqueries. Väldigt svårt att skriva en query utan att se exakt hur din struktur ser ut.

MrTermMedlem sedan feb. 20094 inlägg
#5

Tänkte också detta, men krävs så mycket mer kraft då :(

LarsGMedlem sedan dec. 200012 465 inlägg
#6
select count(BSPid) as countBS 
  from tblBSCustomer
 where exists
     (select 1
        from tblInvoice join blCustomer
          on tblInvoice.invCID = tblCustomer.CID 
       where tblInvoice.invStatus > 0 
         and tblBSCustomer.BSPid = tblCustomer.CPID 
         and MONTH(tblInvoice.invDtm) = Month(current_date)
       group by tblInvoice.invCID
      having Count(*) > 1)
MrTermMedlem sedan feb. 20094 inlägg
#7

Hej Larsg!
Tack för svaret!

Jag kör din sql sats (dock saknas ett t vid blCustomer)

Men denna sql sats laddar konstant och ingenting händer.
Har lite svårt att se vad som kan vara fel, vad betyder: select 1 from tblInvoice

Tack på förhand.

Genererad på 366 ms · cache AV · v20260730165559-full.f96bc7eb