Avatar billede tzag_dk Nybegynder
18. marts 2004 - 13:49 Der er 15 kommentarer og
2 løsninger

Advanceret MySQL SELECT

Hej

Jeg har ved noget hjælp fået lavet en select, men nu skal det udvides lidt.
Her er den som den ser ud nu:
SELECT * FROM hotbilleder LEFT JOIN profiler ON hotbilleder.profilerID = profiler.id WHERE hotbilleder.godkendt = '1' AND profiler.kon = '2' AND profiler.partnerstatus = '1' ORDER BY RAND()

Det jeg gerne vil have den til er at den også skal kontroller om brugerens sessionID er i kolonnen stemmeID i tabellen hotstemmer, til det tilhørende billede id.
Og hvis den er det, så skal den ikke vælge den.
Tabellerne
--------hotbilleder---------
id  godkendt  billede
----------------------------
56  1          56.jpg


--------hotstemmer----------
id  hotbillederID  stemmeID
----------------------------
9  56              5

Hvis det er forvirrende må I lige sige til.
På forhånd tak!
// Rene
Avatar billede fennec Nybegynder
18. marts 2004 - 13:54 #1
noget i denne retning:

"SELECT * FROM hotbilleder LEFT JOIN profiler ON hotbilleder.profilerID = profiler.id WHERE hotbilleder.godkendt = '1' AND profiler.kon = '2' AND profiler.partnerstatus = '1' and stemmeID<>"& session.sessionID &" ORDER BY RAND()"
Avatar billede tzag_dk Nybegynder
18. marts 2004 - 13:56 #2
Jeg prøver lige

// Rene
Avatar billede tzag_dk Nybegynder
18. marts 2004 - 14:00 #3
Jeg får denne fejl:

[TCX][MyODBC]Unknown column 'stemmeID' in 'where clause'

// Rene
Avatar billede fennec Nybegynder
18. marts 2004 - 14:07 #4
min fejl. Jeg fik ikke joinen med.... Det skal være en "left outer join" i stedet, hvis der er billeder, som ikke står i hotstemmer, men som skal med.

"SELECT * FROM hotbilleder LEFT JOIN profiler ON hotbilleder.profilerID = profiler.id "&_
"left join hotstemmer on hotstemmer.hotbillederID = hotbilleder.id " &_
"WHERE hotbilleder.godkendt = '1' AND profiler.kon = '2' " &_
"AND profiler.partnerstatus = '1' and stemmeID<>"& session.sessionID &" " &_
"ORDER BY RAND()"
Avatar billede tzag_dk Nybegynder
18. marts 2004 - 14:17 #5
Det virker ikke rigtig.
Det viser stadigvæk det billede som jeg har stemt på :-(

// Rene
Avatar billede fennec Nybegynder
18. marts 2004 - 14:22 #6
stemmeID og session.sessionID er også det samme???
Avatar billede tzag_dk Nybegynder
18. marts 2004 - 14:33 #7
"SELECT * FROM hotbilleder LEFT JOIN profiler ON hotbilleder.profilerID = profiler.id "&_
"LEFT JOIN hotstemmer ON hotstemmer.hotbillederID = hotbilleder.id " &_
"WHERE hotbilleder.godkendt = '1' AND profiler.kon = '2' " &_
"AND profiler.partnerstatus = '1' AND hotstemmer.stemmeID <> "& session("ID") &" " &_
"ORDER BY RAND()"

Jeg har den til at se sådan her ud nu.
Det hele virker fint, bort ser fra at det virker som om at den ikke tager nr to left join med.

// Rene
Avatar billede fennec Nybegynder
18. marts 2004 - 14:39 #8
Prøv lige med "hotstemmer.stemmeID = 111111" i stedet for "hotstemmer.stemmeID <> "& session("ID"). Så skulle der helst ikke komme noget.
Avatar billede tzag_dk Nybegynder
18. marts 2004 - 19:21 #9
Hej igen...
Jeg havde lige noget andet der skulle ordnes.

Det laver den bare fejl ved :-(
Jeg kan ikke rigtig forstå at det ikke virker...

// Rene
Avatar billede eagleeye Praktikant
22. marts 2004 - 19:24 #10
Hvilken version af mySQL har du?

hvis det er som i access skal der () omkring med flere JOINS:


"SELECT * FROM (hotbilleder LEFT JOIN profiler ON hotbilleder.profilerID = profiler.id) "&_
"LEFT JOIN hotstemmer ON hotstemmer.hotbillederID = hotbilleder.id " &_
"WHERE hotbilleder.godkendt = '1' AND profiler.kon = '2' " &_
"AND profiler.partnerstatus = '1' AND hotstemmer.stemmeID <> "& session("ID") &" " &_
"ORDER BY RAND()"


Eller prøv denne:

"SELECT * FROM (hotbilleder LEFT JOIN profiler ON hotbilleder.profilerID = profiler.id) "&_
"LEFT JOIN hotstemmer ON hotbilleder.id = hotstemmer.hotbillederID " &_
"WHERE hotbilleder.godkendt = '1' AND profiler.kon = '2' " &_
"AND profiler.partnerstatus = '1' AND hotstemmer.stemmeID <> "& session("ID") &" " &_
"ORDER BY RAND()"
Avatar billede tzag_dk Nybegynder
24. marts 2004 - 20:35 #11
Jeg har ikke glemt spørgsmålet, serveren har det bare ikke lige så godt lige nu :-(

// Rene
Avatar billede tzag_dk Nybegynder
26. marts 2004 - 11:48 #12
Så har jeg prøvet det, men den vælger stadigvæk de billeder som der allerede er stemt på :-(
Jeg er ret lost efterhånden :-(

Jeg har det til at se sådan ud nu, også med en count så hvis der ikke er noget billede siger den at der ikke er noget.

SQLCookieCOUNT = "SELECT COUNT(*) AS count FROM (hotbilleder LEFT JOIN profiler ON hotbilleder.profilerID = profiler.id) "&_
"LEFT JOIN hotstemmer ON hotbilleder.id = hotstemmer.hotbillederID " &_
"WHERE hotbilleder.godkendt = '1' AND profiler.kon = '2' " &_
"AND profiler.partnerstatus = '1' AND hotstemmer.stemmeID <> "& session("ID") &" " &_

SQLCookie = "SELECT * FROM hotbilleder LEFT JOIN profiler ON hotbilleder.profilerID = profiler.id WHERE hotbilleder.godkendt = '1' AND profiler.kon = '2' AND profiler.partnerstatus = '1' ORDER BY RAND()"

Kan der evt
Avatar billede tzag_dk Nybegynder
26. marts 2004 - 11:49 #13
sådan her:
SQLCookieCOUNT = "SELECT COUNT(*) AS count FROM (hotbilleder LEFT JOIN profiler ON hotbilleder.profilerID = profiler.id) "&_
"LEFT JOIN hotstemmer ON hotbilleder.id = hotstemmer.hotbillederID " &_
"WHERE hotbilleder.godkendt = '1' AND profiler.kon = '2' " &_
"AND profiler.partnerstatus = '1' AND hotstemmer.stemmeID <> "& session("ID") &" "

SQLCookie = "SELECT * FROM hotbilleder LEFT JOIN profiler ON hotbilleder.profilerID = profiler.id WHERE hotbilleder.godkendt = '1' AND profiler.kon = '2' AND profiler.partnerstatus = '1' ORDER BY RAND()"

Kan man evt lave noget med nogle if sætninger?
Avatar billede tzag_dk Nybegynder
26. marts 2004 - 17:22 #14
Avatar billede tzag_dk Nybegynder
07. maj 2004 - 16:54 #15
fennec >>
Smider du ikke et svar? Så at vi lige kan få lukket dette spm igen igen :-)
Jeg har ikke fundet ud af det endnu, men ellers tak for hjælpen.
Avatar billede fennec Nybegynder
10. maj 2004 - 08:11 #16
tag dem selv. Jeg har ikke brugt så meget tid på dette ? at jeg vil tage point for det.
Avatar billede tzag_dk Nybegynder
10. maj 2004 - 11:00 #17
ok... :-)

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