Avatar billede henninghabor Nybegynder
09. februar 2007 - 17:07 Der er 8 kommentarer og
1 løsning

mySQL forespørgsel virker ikke på server

Hej,

På min lokale server har jeg skrevet nedenstående forespørgsel, der virker fint:

$result = mysql_query("SELECT id, question AS text, (SELECT SUM(votes) FROM polls_answers WHERE questions = (SELECT id FROM polls_questions WHERE starts <= now() AND ends >= now())) AS votes FROM polls_questions WHERE starts <= now() AND ends >= now() UNION SELECT id, answer AS text, votes FROM polls_answers WHERE questions = (SELECT id FROM polls_questions WHERE starts <= now() AND ends >= now())") or die(mysql_errno() . ": " . mysql_error());

Men putter jeg den på den online server, fejler den:

1064: 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 'SELECT SUM(votes) FROM polls_answers WHERE questions = (SELECT

Hvordan får jeg det til at virke igen? Helst så hurtigt som muligt, da jeg i forbifarten overskrev online-versionen uden backup.
Avatar billede erikjacobsen Ekspert
09. februar 2007 - 17:37 #1
Subselects virker ikke i tidlige mysql versioner (før 4.1 ... hvis jeg husker ret). Hvilken version har du testet på, og hvad kører der på serveren ?
Avatar billede henninghabor Nybegynder
09. februar 2007 - 19:40 #2
erikjacobsen>>Lokalt er det MySQL 5.0.27 og på serveren MySQL 4.1.11.
Avatar billede erikjacobsen Ekspert
09. februar 2007 - 19:48 #3
Ja, subselects virker først fra 4.2 - det er derfor (og jeg huskede lige forkert...).
Avatar billede henninghabor Nybegynder
09. februar 2007 - 20:09 #4
Æv. Ligger du et svar?
Avatar billede erikjacobsen Ekspert
09. februar 2007 - 20:11 #5
Jeg samler slet ikke på point, tak. Det er efterhånden vigtigt at kende konkret version af både PHP og MySql på webhotellet.
Avatar billede henninghabor Nybegynder
09. februar 2007 - 20:17 #6
Syntes også at jeg havde styr på det, men det var åbenbart forkert. :)

Tak for hjælpen.

Ved du hvordan jeg ka' skrive forespørgslen om?
Avatar billede henninghabor Nybegynder
09. februar 2007 - 20:17 #7
Snupper selv lige points.
Avatar billede erikjacobsen Ekspert
09. februar 2007 - 20:34 #8
Man kan jo "altid" lave flere forespørgsler, og somme erstatte det med en eller flere passende joins. Men det kan jeg ikke overskue fra hvad du skriver.
Avatar billede henninghabor Nybegynder
09. februar 2007 - 21:30 #9
Jeg fandt selv ud af det:

$result = mysql_query("SELECT a.id, a.question AS text, SUM(b.votes) AS votes FROM polls_questions AS a LEFT JOIN polls_answers AS b ON a.id = b.questions WHERE a.starts <= now() AND a.ends >= now() GROUP BY a.id UNION SELECT b.id, b.answer AS text, b.votes FROM polls_questions AS a LEFT JOIN polls_answers AS b ON a.id = b.questions WHERE a.starts <= now() AND a.ends >= now()") or die(mysql_errno() . ": " . mysql_error());
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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