Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru Длинный SQL Запрос

Длинный SQL Запрос


     24.08.2013    Общие вопросы по PHP, MySQL    1823

вопрос
Всем привет, подскажите пожалуйста как правильно прописать SQL запрос из нескольких разных таблиц?

Сейчас у меня вот такой запрос:

$db->query("SELECT p.id as pid, p.date as pdate, p.title as ptitle, p.category as pcategory, p.alt_name as palt_name, l.value as logval, l.date as logdate FROM ".PREFIX."_logs l LEFT JOIN ".PREFIX."_post p ON l.news_id=p.id WHERE l.member='$name' AND p.id ORDER BY l.date DESC LIMIT {$cstart},{$limit}");

но в него ещё нужно добавить это:

pe.rating as perating ".PREFIX."_post_extras pe


как такое можно сделать? очень нужен рейтинг, он содердится в таблице _post_extras

Ответил: kricha


$db->query("SELECT p.id as pid, p.date as pdate, pe.rating as perating, p.title as ptitle, p.category as pcategory, p.alt_name as palt_name, l.value as logval, l.date as logdate FROM ".PREFIX."_logs l LEFT JOIN ".PREFIX."_post p ON l.news_id=p.id, LEFT JOIN " . PREFIX . "_post_extras pe ON p.id  = pe.news_id WHERE l.member='$name' AND p.id ORDER BY l.date DESC LIMIT {$cstart},{$limit}");

Комментарии пользователей (7)

kricha
4

60 | 12

kricha - 24 августа 2013 23:51 - Юзер

***Комментарий удален***

pavel31
4

348 | 158

pavel31 - 25 августа 2013 00:51 - Юзер

Вот,что пишет:

MySQL error in file: /engine/ajax/rating_profile.php at line 27

Error Number: 1064

The Error returned was:
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 'LEFT JOIN dle_post_extras pe ON p.id=pe.news_id WHERE l.member='pavel31' AND p.i' at line 1
SQL query:

SELECT p.id as pid, p.date as pdate, p.title as ptitle, p.category as pcategory, p.alt_name as palt_name, pe.rating as perating, l.value as logval, l.date as logdate FROM dle_logs l LEFT JOIN dle_post p ON l.news_id=p.id, LEFT JOIN dle_post_extras pe ON p.id=pe.news_id WHERE l.member='pavel31' AND p.id ORDER BY l.date DESC LIMIT 0,10

kricha
4

60 | 12

kricha - 25 августа 2013 10:00 - Юзер

перед WHERE запятую поставить нужно :)

pavel31
4

348 | 158

pavel31 - 25 августа 2013 12:18 - Юзер

Тоже самое :(

Sander
1156

1663 | 1212

Sander - 25 августа 2013 14:09 - Эксперт

Что за глупость?
Перед WHERE никогда не ставится запятая.

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

Sander
1156

1663 | 1212

Sander - 25 августа 2013 14:19 - Эксперт

$db->query("SELECT p.id as pid, p.date as pdate, pe.rating as perating, p.title as ptitle, p.category as pcategory, p.alt_name as palt_name, l.value as logval, l.date as logdate FROM ".PREFIX."_logs l LEFT JOIN ".PREFIX."_post p ON l.news_id=p.id LEFT JOIN " . PREFIX . "_post_extras pe ON p.id  = pe.news_id WHERE l.member='$name' AND p.id ORDER BY l.date DESC LIMIT {$cstart},{$limit}");

Возле LEFT JOIN тоже не должно быть запятых.

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

pavel31
4

348 | 158

pavel31 - 25 августа 2013 18:56 - Юзер

Sander,
Спасибо большое, все работает :)

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы