PDA

View Full Version : What's wrong with this SQL?


Warlord
06-15-2009, 04:32 PM
Can someone please tell me what's wrong with this sql? It gives me a SQL error. Does the WHERE publisher part have to come before the ORDER BY title part?

SELECT *

FROM ah_comics AS ah_comics
LEFT JOIN user AS user ON (ah_comics.userid=user.userid) ORDER BY title
WHERE publisher = 'DC Comics' LIMIT 0, 25;

ForumsMods
06-15-2009, 04:39 PM
Which is the error you get?
you have to put if title and publisher are from ah_comics or user. I think they are from ah_comics.
Try:
SELECT * FROM ah_comics AS ah_comics
LEFT JOIN user AS user ON (ah_comics.userid = user.userid)
WHERE ah_comics.publisher = 'DC Comics' ORDER BY ah_comics.title LIMIT 0, 25;

Warlord
06-15-2009, 04:47 PM
Whoa, now I'm really confused.... but yes the titles are in the ah_comics table.

This is what the code looks like...

$getcomics = $db->query_read("SELECT *

FROM " . TABLE_PREFIX . "ah_comics AS ah_comics
LEFT JOIN " . TABLE_PREFIX . "user AS user ON (ah_comics.userid=user.userid)
$userquery LIMIT " . ($limitlower - 1) . ", $perpage");
while($comics = $db->fetch_array($getcomics))

I just want it to order by title, but when I add ORDER BY title, it works just fine if I'm viewing all of the titles, but if I select a publisher, then I get the following SQL error.

MySQL Error : 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 'WHERE publisher = 'DC Comics' LIMIT 0, 25' at line 5
Error Number : 1064

--------------- Added 1245088186 at 1245088186 ---------------

I should be a little more clear I think...

This works when I view all titles

$getcomics = $db->query_read("SELECT *

FROM " . TABLE_PREFIX . "ah_comics AS ah_comics
LEFT JOIN " . TABLE_PREFIX . "user AS user ON (ah_comics.userid=user.userid) ORDER BY title
$userquery LIMIT " . ($limitlower - 1) . ", $perpage");
while($comics = $db->fetch_array($getcomics))

But when I narrow down the listings by going to an individual publisher, I get that SQL error.

If I remove the ORDER BY title from the code, then I no longer get the sql error, but then they're not in order.

ForumsMods
06-15-2009, 04:54 PM
ORBER BY has to be before LIMIT and after WHERE.

Warlord
06-15-2009, 05:02 PM
Thanks for the help, but unfortunately this seems to be beyond my skill set. All these variables in this code are making what you're trying to tell me very hard for me to understand. :(

Would you mind looking at the file for me?

ForumsMods
06-15-2009, 05:15 PM
$getcomics = $db->query_read("SELECT *
FROM " . TABLE_PREFIX . "ah_comics AS ah_comics
LEFT JOIN " . TABLE_PREFIX . "user AS user ON (ah_comics.userid = user.userid)
$userquery ORDER BY ah_comics.title LIMIT " . ($limitlower - 1) . ", $perpage");
while($comics = $db->fetch_array($getcomics))

Warlord
06-15-2009, 05:17 PM
DUDE.... you are the FREAKIN MAN! Thanks a million! :)