Avatar billede kjoller Nybegynder
27. august 2003 - 06:18 Der er 14 kommentarer og
1 løsning

Tæl antal matches i sql

Jeg har en sql sætning der selecter fra en db.

F.eks. select * from tabel where col1=xxx or col2=xxx or col3=xxx

Findes der ikke en måde man kan lave en count, på hvormange gange den finder hit i col1, col2 og col3?
Avatar billede Six Nybegynder
27. august 2003 - 06:29 #1
SELECT COUNT(*) FROM tabel WHERE col1= OR col2=xxx OR col3=xxx

mit skud :)
Avatar billede kjoller Nybegynder
27. august 2003 - 07:02 #2
Mybad, det er rigtigt jeg glemte at skrive at den også skal hive et id ud hvor de matcher.
Avatar billede razersedge Nybegynder
27. august 2003 - 07:05 #3
SELECT COUNT(*) AS Antal, id FROM tabel WHERE col1=XXX OR col2=XXX OR col3=xxx
Avatar billede razersedge Nybegynder
27. august 2003 - 07:05 #4
Du kan så hente antallet ved at bruge Antal
Avatar billede mm12010 Nybegynder
27. august 2003 - 07:58 #5
du kan også gøre sådan:

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM tabel WHERE col1='xxx' OR col2='xxx' OR col3='xxx'"
rs.Open strSQL, connObj, 1

If Not (rs.BOF Or rs.EOF) Then
  Response.Write "der er " & rs.RecordCount & " resultater<br>"
  Do While Not rs.EOF
    Response.Write rs("felt") & "<br>"
    rs.MoveNext
  Loop
End If
rs.Close
Avatar billede ldanielsen Nybegynder
27. august 2003 - 09:17 #6
Det bliver lidt svært at få både en sammentælling, og de entelte poster ud, du skal lave to queries, en der henter poster, som den du har, og en der laver sammentællingen.

Med den sætning du har, ved du ikke om en post er med fordi col1 er lig xxx, eller om det er col2 eller col3. Men du vil alligevel have en sammetælling for hver enkelt?
Avatar billede mm12010 Nybegynder
27. august 2003 - 09:27 #7
var1 = 0
var2 = 0
var3 = 0
If Not (rs.BOF Or rs.EOF) Then
  Response.Write "der er i alt " & rs.RecordCount & " resultater<br>"
  Do While Not rs.EOF
    If rs("col1") = "xxx111" Then
      var1 = var1 + 1
    End If
    If rs("col2") = "xxx222" Then
      var2 = var2 + 1
    End If
    If rs("col3") = "xxx333" Then
      var3 = var3 + 1
    End If
    rs.MoveNext
  Loop
End If
Response.Write "resultater på col1: " & var1 & "<br>"
Response.Write "resultater på col2: " & var2 & "<br>"
Response.Write "resultater på col3: " & var3 & "<br>"
rs.Close
Avatar billede ldanielsen Nybegynder
27. august 2003 - 09:30 #8
jaja, men så er det jo ikke SQL :o)

men det virker da fint
Avatar billede mm12010 Nybegynder
27. august 2003 - 09:35 #9
det er vel heller ikke et krav ?-)

det er efter min overbevisning den mest hensigtsmæssige og hurtig måde at opnå det ønskede resultat på :o)
Avatar billede eagleeye Praktikant
27. august 2003 - 09:45 #10
ldanielsen hvad med at komme med en læsning i stedet for?? i en SQL sætning .. ;)


mm12010 et andet alternativ med udgangspunkt i din kode:



Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM tabel WHERE col1='xxx' OR col2='xxx' OR col3='xxx'"
rs.Open strSQL, connObj, 1

If Not (rs.BOF Or rs.EOF) Then
  Response.Write "der er " & rs.RecordCount & " resultater<br>"
  rs.Filter = "col1 = 'xxx'"
  Response.Write "Antal match i col1 er " & rs.RecordCount & "<br>"
  rs.Filter = "col2 = 'xxx'"
  Response.Write "Antal match i col2 er " & rs.RecordCount & "<br>"
  rs.Filter = "col3 = 'xxx'"
  Response.Write "Antal match i col3 er " & rs.RecordCount & "<br>"
  Do While Not rs.EOF
    Response.Write rs("felt") & "<br>"
    rs.MoveNext
  Loop
End If
rs.Close
Avatar billede mm12010 Nybegynder
27. august 2003 - 09:48 #11
eagleeye >> lidt mere sexy ;o)
Avatar billede eagleeye Praktikant
27. august 2003 - 09:52 #12
;) hov man skal lige huske at slå filter fä inden man udskriver eller udskriver man kun de recordset hvor col3=xxx
Avatar billede kjoller Nybegynder
27. august 2003 - 18:01 #13
Jeg kigger lige på det
Avatar billede kjoller Nybegynder
18. september 2003 - 17:42 #14
Jeg blev lige fanget i en flytning og mangel på internet forbindelse, så jeg kom aldrig vidre, jeg kigger på det igen, sorry
Avatar billede kjoller Nybegynder
25. oktober 2003 - 00:59 #15
Min løsning blev en blanding mellem mm12010 og eagleeye
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester