webForumDet fria alternativet

Sql sats, flera counts?

Databaser & SQL

6 svar · 340 visningar · startad av MrTerm

Medlem sedan feb. 20094 inlägg
Frågan#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

Medlem sedan dec. 200012 464 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.

Medlem 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!

Medlem sedan apr. 2008137 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.

Medlem sedan feb. 20094 inlägg
#5

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

Medlem sedan dec. 200012 464 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)
Medlem 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.

378 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
121 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)