/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Hvorfor kan jeg ikke dette...?
Fra : Magnus


Dato : 23-11-03 12:26

Med denne URL og SQL linie frå jeg i MySQL vist tre specifikket kampe
kampkalender.asp?id=44&id=54&id=77
SQL = "SELECT * FROM Kampkalender WHERE kampid IN (44, 54, 77)"

Men hvorfor virker det ikke når det er to kampkategorier som jeg søger som
herunder?

kampkalender.asp?type=p&type=ec
SQL = "SELECT * FROM Kampkalender WHERE kampkat IN ('p', 'ec')"

Hvordan får jeg den til at vise kampe med kategori p og ec eller flere som
defineret i url'en som denne "kampkalender.asp?type=p&type=ec"?


/Magnus






 
 
Lars Hoffmann (23-11-2003)
Kommentar
Fra : Lars Hoffmann


Dato : 23-11-03 20:21

Magnus escribió / skrev

> SQL = "SELECT * FROM Kampkalender WHERE kampkat IN ('p', 'ec')"

Ovenstående er fuldt ud gyldig SQL, men måske vil det virke bedre hvis
du laver en:

SQL = "SELECT * FROM Kampkalender WHERE kampkat = 'p' or kampkat = 'ec'"

Hvis dette heller ikke virker, må vi lige få en fejlbesked i gruppen.

Peter Lykkegaard (23-11-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 23-11-03 20:44

Lars Hoffmann wrote:
> Magnus escribió / skrev
>
>> SQL = "SELECT * FROM Kampkalender WHERE kampkat IN ('p', 'ec')"
>
> Ovenstående er fuldt ud gyldig SQL, men måske vil det virke bedre hvis
> du laver en:
>
> SQL = "SELECT * FROM Kampkalender WHERE kampkat = 'p' or kampkat =
> 'ec'"
>
Jeg vil til enhver tid foretrække brugen af IN (i dette tilfælde)
Rdbms er jo som bekendt set og mængde orienteret

- Peter



Jens Gyldenkærne Cla~ (23-11-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 23-11-03 20:59

Lars Hoffmann skrev:

>> SQL = "SELECT * FROM Kampkalender WHERE kampkat IN ('p',
>> 'ec')"

Nu kender jeg ikke meget til mySQL, men så vidt jeg ved bliver
"foo IN (x, y, z)" kørt og fortolket præcis som foo = x OR foo = y
OR foo = z - altså svarende til din omskrivning her:

> SQL = "SELECT * FROM Kampkalender WHERE kampkat = 'p' or
> kampkat = 'ec'"

Jeg er ret sikker på at MS-databaser opfører sig på denne måde, og
jeg vil tro at det samme gælder for mysql.

> Hvis dette heller ikke virker, må vi lige få en fejlbesked i
> gruppen.

Det er altid et godt råd. Jesper Stocholm har i sit svar henvist
til FAQ-artikel nr 1 i gruppen (som rent teknisk har nummeret 41,
men stadig - IMO - er den absolut vigtigste på siden). Den kan ikke
anbefales for meget
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jesper Stocholm (23-11-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 23-11-03 20:36

Magnus wrote :

> Med denne URL og SQL linie frå jeg i MySQL vist tre specifikket kampe
> kampkalender.asp?id=44&id=54&id=77
> SQL = "SELECT * FROM Kampkalender WHERE kampid IN (44, 54, 77)"
>
>
> Men hvorfor virker det ikke når det er to kampkategorier som jeg søger
> som herunder?
>
> kampkalender.asp?type=p&type=ec
> SQL = "SELECT * FROM Kampkalender WHERE kampkat IN ('p', 'ec')"
>
> Hvordan får jeg den til at vise kampe med kategori p og ec eller flere
> som defineret i url'en som denne "kampkalender.asp?type=p&type=ec"?

For det første bør du overveje, hvad der sker, når du henter data fra din
QueryString. Hvis du har flere elementer med samme navn, så vil du
modtage en komma-sepereret string med elementerne i.

Hvis du altså har

kampkalender.asp?type=p&type=ec

Vil

Request.QueryString("type") give dig

p, ec

Men når du smider disse data ind i en Sql-streng fx med koden

sType = Request.QueryString("type")
Sql = "SELECT * FROM Kampkalender WHERE kampid IN (" & sType & ")"

Vil det give

SELECT * FROM Kampkalender WHERE kampid IN (p, ec)

Men i Sql skal strengsammenligninger indkapsles i plinger ', men da det
ikke er tilfældet, så vil du få en "Type mismatch", når du sender din Sql
til databasen. Prøv evt Lars' forslag til en anden måde at gøre det på.
Den Sql du skal have dannet er (som i dit eget eksempel)

SELECT * FROM Kampkalender WHERE kampid IN ('p', 'ec')

Som Lars også påpeger, så er det ALTID en god idé at medsende eventuelle
fejlkoder, når man beder om hjælp, da det hjælper os andre til at finde
fejlen i den kode du har skrevet. Læs derfor gerne [1] før du svarer på
dette.

[1] http://www.asp-faq.dk/article/?id=41

--
Jesper Stocholm
http://stocholm.dk
Give a man a fish and he will have food for a day,
give a man an elephant, and he will have food for a week.

Jesper Stocholm (24-11-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 24-11-03 16:03

Magnus wrote :

> Med denne URL og SQL linie frå jeg i MySQL vist tre specifikket kampe
> kampkalender.asp?id=44&id=54&id=77
> SQL = "SELECT * FROM Kampkalender WHERE kampid IN (44, 54, 77)"
>
> Men hvorfor virker det ikke når det er to kampkategorier som jeg søger
> som herunder?
>
> kampkalender.asp?type=p&type=ec
> SQL = "SELECT * FROM Kampkalender WHERE kampkat IN ('p', 'ec')"
>
> Hvordan får jeg den til at vise kampe med kategori p og ec eller flere
> som defineret i url'en som denne "kampkalender.asp?type=p&type=ec"?

Jeg faldt i øvrigt lige over en artikel på www.asp-faq.dk, som du nok bør
læse også.

http://www.asp-faq.dk/article/?id=68



--
Jesper Stocholm
http://stocholm.dk
Give a man a fish and he will have food for a day,
give a man an elephant, and he will have food for a week.

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste