Avatar billede egeriis Nybegynder
06. september 2005 - 17:00 Der er 4 kommentarer og
1 løsning

'Multiple' MySQL query

Jeg kan simpelthen ikke overskue det her. Jeg har følgende MySQL query.

SELECT ed_gallery_hot.* FROM ed_gallery_hot,ed_hot_votes WHERE ed_hot_votes.uid='" . $uid . "' && ed_hot_votes.pid!=ed_gallery_hot.id && ed_gallery_hot.approved='1' ORDER BY RAND(ed_gallery_hot.id) LIMIT 1

Det jeg vil, er at finde et billede i ed_gallery_hot, som ikke har en række i ed_hot_votes, hvor uid er det samme som $uid, og ed_hot_votes.pid er det samme som ed_gallery_hot.id.


På forhånd tak.
Avatar billede kjulius Novice
06. september 2005 - 18:47 #1
Et par forslag (ikke testede):

SELECT ed_gallery_hot.*
FROM ed_gallery_hot
LEFT JOIN ed_hot_votes ON ed_hot_votes.pid=ed_gallery_hot.id
WHERE ed_gallery_hot.id='" . $uid . "' AND ed_gallery_hot.approved='1' AND ed_hot_votes.pid IS NULL
ORDER BY RAND(ed_gallery_hot.id)
LIMIT 1

SELECT *
FROM ed_gallery_hot
WHERE id='" . $uid . "' AND approved='1'
AND NOT EXISTS (SELECT * FROM ed_hot_votes WHERE pid = ed_gallery_hot.id)
ORDER BY RAND(ed_gallery_hot.id)
LIMIT 1

Det sidste forslag kræver en MySQL version 4.1 eller derover.
Avatar billede egeriis Nybegynder
12. september 2005 - 17:33 #2
Eftersom der ikke er MySQL 4.1 eller over hos min webhost prøvede jeg den første. Og det virkede, så jeg takker tusind gange for hjælpen. Det har været til stor hjælp.

Hvis du ligger et svar vil jeg uddele pointene. Og undskyld ventetiden.

Mange tak :)
Avatar billede egeriis Nybegynder
12. september 2005 - 17:35 #3
Nå ja, der var faktisk en mindre fejl, men jeg tror blot det har været en misforståelse, men jeg fik det ihvertfald til at virke :)
Avatar billede kjulius Novice
12. september 2005 - 18:24 #4
Jamen, det er da bare super!
Avatar billede neonman Nybegynder
26. august 2006 - 17:10 #5
Takker ;)

denne sting

SELECT ed_gallery_hot.*
FROM ed_gallery_hot
LEFT JOIN ed_hot_votes ON ed_hot_votes.pid=ed_gallery_hot.id
WHERE ed_gallery_hot.id='" . $uid . "' AND ed_gallery_hot.approved='1' AND ed_hot_votes.pid IS NULL
ORDER BY RAND(ed_gallery_hot.id)
LIMIT 1

SELECT *
FROM ed_gallery_hot
WHERE id='" . $uid . "' AND approved='1'
AND NOT EXISTS (SELECT * FROM ed_hot_votes WHERE pid = ed_gallery_hot.id)
ORDER BY RAND(ed_gallery_hot.id)
LIMIT 1


er alt alt for nice ;) så lærte man også nået nyt SQL idag :) dejlig lørdag
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
Computerworld tilbyder specialiserede kurser i database-management

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