Avatar billede ashansen Nybegynder
06. juli 2005 - 20:28 Der er 28 kommentarer og
1 løsning

Kombination af WHERE og AND

Hej

Jeg sidder med et problem, hvor jeg ønsker at sætte to kriterier på min sql sætning. Min sql sætning ser således ud:

"SELECT * FROM helnaes_dysten WHERE deltagernavn=" & dyst("deltagernavn") & " AND aar=2005"

Jeg får fejl når jeg har & " AND aar=2005" med i min sql særning.
Nogle løsningsforslag?

Mvh

Allan
Avatar billede cool_casper Nybegynder
06. juli 2005 - 20:35 #1
Er du sikker på at feltet aar er et tal? Hvis det er en streng skal du sætte ' omkring:
SELECT * FROM helnaes_dysten WHERE deltagernavn=" & dyst("deltagernavn") & " AND aar='2005'
Dog ville det være mest logisk at det var et tal-felt af en art.
Avatar billede soes Nybegynder
06. juli 2005 - 20:40 #2
SELECT * FROM helnaes_dysten WHERE deltagernavn = '" & dyst("deltagernavn") & "' AND aar = 2005

Ville være mit bud
Avatar billede ashansen Nybegynder
06. juli 2005 - 20:40 #3
feltet aar er af typen integer, så det vil jeg mene.
jeg jeg sætter ' om 2005, så får jeg stadig fejl
Avatar billede ashansen Nybegynder
06. juli 2005 - 20:41 #4
heller ikke bud to kan jeg få til at virke
Avatar billede busschou Praktikant
06. juli 2005 - 20:44 #5
der skal vel ' omkring navnet som vel er en streng?
"SELECT * FROM helnaes_dysten WHERE deltagernavn = '" & dyst("deltagernavn") & "' AND aar = 2005"
Avatar billede soes Nybegynder
06. juli 2005 - 20:44 #6
hvilken fejl får du når du prøver din "egen" sql sætning
Avatar billede busschou Praktikant
06. juli 2005 - 20:45 #7
Hvilken fejl får du?
Prøv lave en response.write på din sql så vi kan se det den sætter ind!
Avatar billede ashansen Nybegynder
06. juli 2005 - 20:46 #8
http://dysten.ashansen.dk/default.asp?dysten=samletstilling

her er siden, hvor jeg ikke sortere alt andet i år 2005 fra.

Koden hertil er

Set dyst2 = Conn.Execute("SELECT * FROM helnaes_dysten WHERE deltagernavn=" & dyst("deltagernavn"))

total = 0
aar = dyst2("aar")

Do
total = total + dyst2("point")
dyst2.MoveNext
Loop While Not dyst2.EOF
               
response.write (deltager & " har opnået " & total & " point i Helnæs dysten " & aar & "<br>")
Avatar billede busschou Praktikant
06. juli 2005 - 20:48 #9
men hvad siger den når du sætter året ind, hvad er fejl medelelsen ?
Avatar billede ashansen Nybegynder
06. juli 2005 - 20:49 #10
du kan se fejlen via linket nu
Avatar billede ashansen Nybegynder
06. juli 2005 - 20:49 #11
linie 104 er aar = dyst2("aar")
Avatar billede busschou Praktikant
06. juli 2005 - 20:51 #12
hmm så med andre ord finder den ingen records
Avatar billede ashansen Nybegynder
06. juli 2005 - 20:53 #13
det forstår jeg ikke, for feltet indeholder værdien 2005
Avatar billede ashansen Nybegynder
06. juli 2005 - 20:57 #14
hvis jeg kun sætter kriteriet aar=2005 finder den fint de poster med værdien 2005. Dette gør jeg med sql sætningen "SELECT * FROM helnaes_dysten WHERE aar = 2005".
Så det er vel måden jeg kombinerer sætningen med AND ??
Avatar billede soes Nybegynder
06. juli 2005 - 20:59 #15
Set dyst2 = Conn.Execute("SELECT SUM("point") AS pointTotal FROM helnaes_dysten WHERE deltagernavn = '" & dyst("deltagernavn") & " '")

Response.Write(deltager & " har opnået " & dyst2("pointTotal") & " point i Helnæs dysten " & aar & "<br>")

hvad sker der hvis du laver det istedet for?
Avatar billede busschou Praktikant
06. juli 2005 - 21:00 #16
hvad så med den her... hvad siger den til den
Set dyst2 = Conn.Execute("SELECT * FROM helnaes_dysten WHERE deltagernavn='" & dyst("deltagernavn") &"' And aar = 2005)
Avatar billede soes Nybegynder
06. juli 2005 - 21:05 #17
Som fejlen antyder får du ikke valgt nogle poster ud med dit udtryk. Hvis du gerne vil bruge din løkke struktur til at summere op med så bør du gøre noget andet

While Not dyst2.EOF OR dyst.BOF
  total = total + dyst2("point")
  dyst2.MoveNext
Loop

response.write (deltager & " har opnået " & total & " point i Helnæs dysten " & aar & "<br>")
Avatar billede ashansen Nybegynder
06. juli 2005 - 21:06 #18
soes: så får jeg fejlen Syntax error, unexpected "identifier", expecting ")"
i linien i sql sætningen

busschou: så får jeg fejlen Unexpected end of line inside a string, da der mangler en " i efter 2005.
Når jeg sætter den melder den fejl i linien aar = dyst2("aar") som før
Avatar billede ashansen Nybegynder
06. juli 2005 - 21:10 #19
jeg har ikke fortalt, at denne løkkestryktur jeg har her, er en løkke i en løkke, hvor dyst bliver summeret op i slutningen af den sidste løkke
Avatar billede ashansen Nybegynder
06. juli 2005 - 21:17 #20
jeg har fået løst problemet med af bruge or i stedet for and

min sql ser således ud "SELECT * FROM helnaes_dysten WHERE deltagernavn=" & dyst("deltagernavn") & " OR aar=2005"

takker for hjælpen
Avatar billede busschou Praktikant
06. juli 2005 - 21:19 #21
hehe ja klart ...doh
Avatar billede soes Nybegynder
06. juli 2005 - 21:34 #22
vil mene at det burde kunne lade sig gøre med AND hvis det altså var det som du oprindeligt ville opnå.

Grunden til at det fejler tror jeg er at et af dine kriterier ikke har en værdi og derfor vil din forespørgsel retunere et tomt resultset som fejler da du ikke tester på om det er tomt inden at du starter på at løbe det igennem. Du antager hver gang at der er data som opfylder dit kriterie hvilket er forkert.
Avatar billede ashansen Nybegynder
06. juli 2005 - 21:36 #23
jeg kan godt følge dig. Men jeg ved at der er en værdi i tabellen der er 2005, så jeg kan ikke se logikken i hvorfor den fejler
Avatar billede busschou Praktikant
06. juli 2005 - 21:38 #24
Det er klart at AND betyder OG ... så det kræver at aar er 2005 OG at den anden betingelse også er opfyldt
Avatar billede ashansen Nybegynder
06. juli 2005 - 21:39 #25
det er de positivt også
Avatar billede soes Nybegynder
06. juli 2005 - 21:45 #26
det må altså kunne laves noget smartere det du har gang i.

Det hele burde kunne klares på en SQL sætning, hvis man lige ville bruge lidt tid på at skrive den. Kan du ikke prøve at vise din struktur for databasen. Både med tabeller og felter i disse
Avatar billede ashansen Nybegynder
07. juli 2005 - 09:47 #27
Hej igen

Jeg har valgt at strukturer min db anderledes, således det hele bliver meget nemmere at håndtere.

Men tak for hjælpen alligevel

Mvh

Allan
Avatar billede busschou Praktikant
27. juli 2005 - 16:00 #28
ashansen >> ved ikke om du ønsker et svar, men hvis det er løst så er det vel lukketid ;o)
Avatar billede ashansen Nybegynder
30. juli 2005 - 20:35 #29
Hej igen

Jeg beklager mit lange fraværd - hermed tildeles :)

/Allan
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