|
| SQL sortering Fra : j p |
Dato : 10-10-09 14:55 |
|
Jeg har følgende asp kode:
<%
set rs = server.createobject("adodb.recordset")
sql = "SELECT tabel.brugernavn FROM tabel LEFT OUTER JOIN
ignorelist ON ignorelist.ignore=tabel.brugernavn WHERE
ignorelist.brugernavn = '" & session("loginbrugernavn") & "'"
rs.open sql, Conn, 0, 1, 1
do until rs.eof
response.Write "<li>" & rs("brugernavn") & "</li>"
rs.movenext
loop
%>
Den viser en liste over dem i tabel som også findes i ignorelist
..
Jeg vil gerne have den til at vise alle andre end dem der findes
i ignorelist! Hvordan?
mvh
Johnny
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Stig Johansen (10-10-2009)
| Kommentar Fra : Stig Johansen |
Dato : 10-10-09 18:16 |
|
j p wrote:
> Jeg har følgende asp kode:
>
> <%
>
> set rs = server.createobject("adodb.recordset")
> sql = "SELECT tabel.brugernavn FROM tabel LEFT OUTER JOIN
> ignorelist ON ignorelist.ignore=tabel.brugernavn WHERE
> ignorelist.brugernavn = '" & session("loginbrugernavn") & "'"
> rs.open sql, Conn, 0, 1, 1
...
> Jeg vil gerne have den til at vise alle andre end dem der findes
> i ignorelist! Hvordan?
sql = "SELECT tabel.brugernavn FROM tabel LEFT OUTER JOIN ignorelist ON
ignorelist.ignore=tabel.brugernavn WHERE ignorelist.ignore IS NULL"
--
Med venlig hilsen
Stig Johansen
| |
j p (11-10-2009)
| Kommentar Fra : j p |
Dato : 11-10-09 15:13 |
|
Stig Johansen wrote in dk.edb.internet.webdesign.serverside.asp:
> j p wrote:
>
> > Jeg har følgende asp kode:
> >
> > <%
> >
> > set rs = server.createobject("adodb.recordset")
> > sql = "SELECT tabel.brugernavn FROM tabel LEFT OUTER JOIN
> > ignorelist ON ignorelist.ignore=tabel.brugernavn WHERE
> > ignorelist.brugernavn = '" & session("loginbrugernavn") & "'"
> > rs.open sql, Conn, 0, 1, 1
> ...
> > Jeg vil gerne have den til at vise alle andre end dem der findes
> > i ignorelist! Hvordan?
>
> sql = "SELECT tabel.brugernavn FROM tabel LEFT OUTER JOIN ignorelist ON
> ignorelist.ignore=tabel.brugernavn WHERE ignorelist.ignore IS NULL"
>
>
> --
> Med venlig hilsen
> Stig Johansen
Hej Stig, det virker også fint, men det tager alle fra ignorelist....det
skal kun være dem som er = session("loginbruigernavn") altså dem som den
indloggede bruger har ignoreret.
Hvordan løser man den?
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Stig Johansen (12-10-2009)
| Kommentar Fra : Stig Johansen |
Dato : 12-10-09 05:18 |
|
j p wrote:
> Stig Johansen wrote in dk.edb.internet.webdesign.serverside.asp:
>> j p wrote:
>>
>> > Jeg har følgende asp kode:
>> >
>> > <%
>> >
>> > set rs = server.createobject("adodb.recordset")
>> > sql = "SELECT tabel.brugernavn FROM tabel LEFT OUTER JOIN
>> > ignorelist ON ignorelist.ignore=tabel.brugernavn WHERE
>> > ignorelist.brugernavn = '" & session("loginbrugernavn") & "'"
>> > rs.open sql, Conn, 0, 1, 1
>> ...
>> > Jeg vil gerne have den til at vise alle andre end dem der findes
>> > i ignorelist! Hvordan?
>>
>> sql = "SELECT tabel.brugernavn FROM tabel LEFT OUTER JOIN ignorelist ON
>> ignorelist.ignore=tabel.brugernavn WHERE ignorelist.ignore IS NULL"
>>
>
> Hej Stig, det virker også fint, men det tager alle fra ignorelist....det
> skal kun være dem som er = session("loginbruigernavn") altså dem som den
> indloggede bruger har ignoreret.
>
> Hvordan løser man den?
Jeg forstår ikke rigtig hvad det er du vil have.
Du bruger først:
....
WHERE ignorelist.brugernavn = '" & session("loginbrugernavn")
....
Som finder det pågøldende brugernavn i ignorelist, og så skriver du at du
vil have alle andre end dem, der findes i ignorelist.
Dette gøres med:
....
WHERE ignorelist.ignore IS NULL
....
Nu vil du igen have = session("loginbruigernavn").
Du kan ikke søge på både en værdi, samtidig med den ikke må eksistere.
Det ville være smartere hvis du listede nogle testdata op, så man kan se
indhold og sammenhæng i dine tabeller.
Måske skal din SQL 'vendes om', men som sagt, så prøv at lave en liste med
eksempler på indhold, eksempelvis:
tabel:
Brugernavn
aa
ab
ac
ad
....
Ignorelist:
ignore brugernavn
aa ??
?? ??
.....
Og lave så en liste med hvordan resultatet skal se ud.
Du skal regne med, at os der læser intet aner om dit system, hvad det er for
noget, ej heller data og relationer.
Jeg vil godt hjælpe, men jeg har ikke rigtig nogle gæt på hvad det er du
vil.
En sætning som:
"altså dem som den indloggede bruger har ignoreret"
Giver formentlig mening for dig og dine brugere, men jeg ved ikke hvad du
mener med 'ignoreret'.
--
Med venlig hilsen
Stig Johansen
| |
j p (12-10-2009)
| Kommentar Fra : j p |
Dato : 12-10-09 16:10 |
|
Ok,
En bruger er logget ind på siden og brugerens brugernavn er lagt i
sessions-variablen session("loginbrugernavn")
Har har en tabel med navnet tabel.
Tabel
..........
Brugernavn
----------
Kim
Børge
Poul
Sanne
Ib
o.s.v.
En anden tabel
Ignorerlist
-----------
Brugernavn Ignorer
Kim Sanne
Børge Peter
Kim Ib
Poul Lars
o.s.v.
Nu vil jeg gerne have listet alle brugernavne fra tabel, bortset fra dem som
den indloggede bruger har i Ignorerlist.
Altså skal resultatet være, hvis vi siger at Kim er logget ind:
Liste
.......
Kim
Børge
Poul
Altså uden Sanne og Ib.
Giver det mening nu? Håber det :)
mvh
Johnny
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Stig Johansen (12-10-2009)
| Kommentar Fra : Stig Johansen |
Dato : 12-10-09 19:48 |
|
"j p" <donner_63@hotmail.com> wrote in message
news:4ad346d1$0$286$14726298@news.sunsite.dk...
> Ok,
>
> En bruger er logget ind på siden og brugerens brugernavn er lagt i
> sessions-variablen session("loginbrugernavn")
>
> Har har en tabel med navnet tabel.
>
> Tabel
> .........
> Brugernavn
> ----------
> Kim
> Børge
> Poul
> Sanne
> Ib
> o.s.v.
>
>
> En anden tabel
>
> Ignorerlist
> -----------
> Brugernavn Ignorer
> Kim Sanne
> Børge Peter
> Kim Ib
> Poul Lars
> o.s.v.
>
>
> Nu vil jeg gerne have listet alle brugernavne fra tabel, bortset fra dem
som
> den indloggede bruger har i Ignorerlist.
>
> Altså skal resultatet være, hvis vi siger at Kim er logget ind:
>
> Liste
> ......
> Kim
> Børge
> Poul
>
>
> Altså uden Sanne og Ib.
>
> Giver det mening nu? Håber det :)
Ja, nu tror jeg den fes ind :)
Tilsyneladende understøtter Access ikke yderligere specs i JOIN, så vi må
over i en anden konstruktion.
Nu skriver du ikke hvilken database du bruger, men den her er aftestet i
Access ud fra dine data, og bør virke i andre databaser også:
SELECT T.Brugernavn
FROM Tabel T
WHERE NOT EXISTS (SELECT I.Brugernavn FROM Ignorerlist I WHERE
I.Brugernavn='Kim' AND I.Ignorer=T.Brugernavn)
ORDER BY T.Brugernavn
Når du bygger SQL strengen skal du så bruge session("loginbrugernavn") i
stredet for Kim.
--
Med venlig hilsen/Best regards
Stig Johansen
| |
j p (12-10-2009)
| Kommentar Fra : j p |
Dato : 12-10-09 20:22 |
|
Stig Johansen wrote in dk.edb.internet.webdesign.serverside.asp:
> "j p" <donner_63@hotmail.com> wrote in message
> news:4ad346d1$0$286$14726298@news.sunsite.dk...
> > Ok,
> >
> > En bruger er logget ind på siden og brugerens brugernavn er lagt i
> > sessions-variablen session("loginbrugernavn")
> >
> > Har har en tabel med navnet tabel.
> >
> > Tabel
> > .........
> > Brugernavn
> > ----------
> > Kim
> > Børge
> > Poul
> > Sanne
> > Ib
> > o.s.v.
> >
> >
> > En anden tabel
> >
> > Ignorerlist
> > -----------
> > Brugernavn Ignorer
> > Kim Sanne
> > Børge Peter
> > Kim Ib
> > Poul Lars
> > o.s.v.
> >
> >
> > Nu vil jeg gerne have listet alle brugernavne fra tabel, bortset fra dem
> som
> > den indloggede bruger har i Ignorerlist.
> >
> > Altså skal resultatet være, hvis vi siger at Kim er logget ind:
> >
> > Liste
> > ......
> > Kim
> > Børge
> > Poul
> >
> >
> > Altså uden Sanne og Ib.
> >
> > Giver det mening nu? Håber det :)
>
> Ja, nu tror jeg den fes ind :)
> Tilsyneladende understøtter Access ikke yderligere specs i JOIN, så vi må
> over i en anden konstruktion.
>
> Nu skriver du ikke hvilken database du bruger, men den her er aftestet i
> Access ud fra dine data, og bør virke i andre databaser også:
>
> SELECT T.Brugernavn
> FROM Tabel T
> WHERE NOT EXISTS (SELECT I.Brugernavn FROM Ignorerlist I WHERE
> I.Brugernavn='Kim' AND I.Ignorer=T.Brugernavn)
> ORDER BY T.Brugernavn
>
> Når du bygger SQL strengen skal du så bruge session("loginbrugernavn") i
> stredet for Kim.
>
> --
> Med venlig hilsen/Best regards
> Stig Johansen
>
>
>
Hej
Jeg har mySQL:
sql ="SELECT T.Brugernavn FROM tabel T WHERE NOT EXISTS (SELECT I.Brugernavn
FROM Ignorelist I WHERE I.Brugernavn='"& session("loginbrugernavn")& "' AND
I.Ignore=T.Brugernavn) ORDER BY T.Brugernavn"
men får fejlen :
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-4.0.26-standard]You have an error in your
SQL syntax. Check the manual that corresponds to your MySQL server version
for the right syntax to use near 'EXISTS (SELECT I.Brugernavn FROM Ignorelist
I WHERE I.Brugernav
/soeg_test.asp, line 13
Kan du se hvorfor?
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Stig Johansen (13-10-2009)
| Kommentar Fra : Stig Johansen |
Dato : 13-10-09 05:51 |
|
j p wrote:
> Jeg har mySQL:
>
> sql ="SELECT T.Brugernavn FROM tabel T WHERE NOT EXISTS (SELECT
> I.Brugernavn FROM Ignorelist I WHERE I.Brugernavn='"&
> session("loginbrugernavn")& "' AND I.Ignore=T.Brugernavn) ORDER BY
> T.Brugernavn"
>
> men får fejlen :
>
> Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
>
> [MySQL][ODBC 3.51 Driver][mysqld-4.0.26-standard]You have an error in your
> SQL syntax. Check the manual that corresponds to your MySQL server version
> for the right syntax to use near 'EXISTS (SELECT I.Brugernavn FROM
> Ignorelist I WHERE I.Brugernav
>
> /soeg_test.asp, line 13
>
> Kan du se hvorfor?
Hvis [mysqld-4.0.26-standard] er et udtryk for du kører version 4.0.26, så
understøtter den ikke subselects (selects inde i parantesen).
Det kom først med version 4.1, som i øvrigt er rimelig gammel.
Den version jeg har adgang til på Unoeuro er 5.1.17
Mit bedste bud er at få opdateret mySQL, ellers må jeg melde pas.
--
Med venlig hilsen
Stig Johansen
| |
j p (14-10-2009)
| Kommentar Fra : j p |
Dato : 14-10-09 11:44 |
|
Stig Johansen wrote in dk.edb.internet.webdesign.serverside.asp:
> j p wrote:
>
> > Jeg har mySQL:
> >
> > sql ="SELECT T.Brugernavn FROM tabel T WHERE NOT EXISTS (SELECT
> > I.Brugernavn FROM Ignorelist I WHERE I.Brugernavn='"&
> > session("loginbrugernavn")& "' AND I.Ignore=T.Brugernavn) ORDER BY
> > T.Brugernavn"
> >
> > men får fejlen :
> >
> > Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
> >
> > [MySQL][ODBC 3.51 Driver][mysqld-4.0.26-standard]You have an error in your
> > SQL syntax. Check the manual that corresponds to your MySQL server version
> > for the right syntax to use near 'EXISTS (SELECT I.Brugernavn FROM
> > Ignorelist I WHERE I.Brugernav
> >
> > /soeg_test.asp, line 13
> >
> > Kan du se hvorfor?
>
> Hvis [mysqld-4.0.26-standard] er et udtryk for du kører version 4.0.26, så
> understøtter den ikke subselects (selects inde i parantesen).
>
> Det kom først med version 4.1, som i øvrigt er rimelig gammel.
>
> Den version jeg har adgang til på Unoeuro er 5.1.17
>
> Mit bedste bud er at få opdateret mySQL, ellers må jeg melde pas.
>
> --
> Med venlig hilsen
> Stig Johansen
Okay, jeg vil prøve at få mit webhotel til at opdatere min mySQL....de har
andre servere som kører 5.0. Jeg takker for din hjælp.
mvh
Johnny
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Stig Johansen (14-10-2009)
| Kommentar Fra : Stig Johansen |
Dato : 14-10-09 14:41 |
|
j p wrote:
> Okay, jeg vil prøve at få mit webhotel til at opdatere min mySQL....de har
> andre servere som kører 5.0. Jeg takker for din hjælp.
Jeg har lige testet de samme data og SQL på min mySQL, og der virker det
fint.
--
Med venlig hilsen
Stig Johansen
| |
j p (15-10-2009)
| Kommentar Fra : j p |
Dato : 15-10-09 18:12 |
|
Stig Johansen wrote in dk.edb.internet.webdesign.serverside.asp:
> j p wrote:
>
> > Okay, jeg vil prøve at få mit webhotel til at opdatere min mySQL....de har
> > andre servere som kører 5.0. Jeg takker for din hjælp.
>
> Jeg har lige testet de samme data og SQL på min mySQL, og der virker det
> fint.
>
> --
> Med venlig hilsen
> Stig Johansen
Hej Stig,
Jeg har nu fået mySQL 5.0 og har:
sql ="SELECT T.Brugernavn FROM tabel T WHERE NOT EXISTS (SELECT I.Brugernavn
FROM ignorelist I WHERE I.Brugernavn='"& session("loginbrugernavn")& "' AND
I.Ignore=T.Brugernavn) ORDER BY T.Brugernavn"
Kan man, i samme sql, også filtere så man kun får folk på listen som er 44 år
f.eks. alder='44" hvordan sætter man det ind ?
mvh
Johnny
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Stig Johansen (16-10-2009)
| Kommentar Fra : Stig Johansen |
Dato : 16-10-09 01:11 |
|
j p wrote:
> Jeg har nu fået mySQL 5.0 og har:
Godt ;)
>
> sql ="SELECT T.Brugernavn FROM tabel T WHERE NOT EXISTS (SELECT
> I.Brugernavn FROM ignorelist I WHERE I.Brugernavn='"&
> session("loginbrugernavn")& "' AND I.Ignore=T.Brugernavn) ORDER BY
> T.Brugernavn"
>
> Kan man, i samme sql, også filtere så man kun får folk på listen som er 44
> år
> f.eks. alder='44"
Ja.
> hvordan sætter man det ind ?
Du fortsætter bare i WHERE delen (laver lige nogle linieskift aht
overskueligheden):
.....
SELECT T.Brugernavn
FROM tabel T
WHERE NOT EXISTS (SELECT
I.Brugernavn FROM ignorelist I WHERE I.Brugernavn='"&
session("loginbrugernavn")& "' AND I.Ignore=T.Brugernavn)
AND alder='44' (eller alder=44, hvis det er et talfelt)
AND evt.noget.mere
ORDER BY T.Brugernavn
.....
Hvis du vil hente alder (ELLER ANDET; DER INdgår i SQL'en) fra et input
felt, skal du huske at sikre mod SQL injection.
--
Med venlig hilsen
Stig Johansen
| |
j p (16-10-2009)
| Kommentar Fra : j p |
Dato : 16-10-09 07:30 |
|
Stig Johansen wrote in dk.edb.internet.webdesign.serverside.asp:
> j p wrote:
>
> > Jeg har nu fået mySQL 5.0 og har:
>
> Godt ;)
>
> >
> > sql ="SELECT T.Brugernavn FROM tabel T WHERE NOT EXISTS (SELECT
> > I.Brugernavn FROM ignorelist I WHERE I.Brugernavn='"&
> > session("loginbrugernavn")& "' AND I.Ignore=T.Brugernavn) ORDER BY
> > T.Brugernavn"
> >
> > Kan man, i samme sql, også filtere så man kun får folk på listen som er 44
> > år
> > f.eks. alder='44"
>
> Ja.
>
> > hvordan sætter man det ind ?
>
> Du fortsætter bare i WHERE delen (laver lige nogle linieskift aht
> overskueligheden):
> .....
> SELECT T.Brugernavn
> FROM tabel T
> WHERE NOT EXISTS (SELECT
> I.Brugernavn FROM ignorelist I WHERE I.Brugernavn='"&
> session("loginbrugernavn")& "' AND I.Ignore=T.Brugernavn)
>
> AND alder='44' (eller alder=44, hvis det er et talfelt)
> AND evt.noget.mere
>
> ORDER BY T.Brugernavn
> .....
> Hvis du vil hente alder (ELLER ANDET; DER INdgår i SQL'en) fra et input
> felt, skal du huske at sikre mod SQL injection.
>
> --
> Med venlig hilsen
> Stig Johansen
Super....jeg takker mange gange for din hjælp.
Johnny
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Stig Johansen (16-10-2009)
| Kommentar Fra : Stig Johansen |
Dato : 16-10-09 09:03 |
|
Stig Johansen wrote:
> ELLER ANDET; DER INdgår i SQL'en)
Hmm.. hvad f*nden skete der lige med cAPs LoCk ? :)
--
Med venlig hilsen
Stig Johansen
| |
|
|