Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » MySQL » Как добавить третий LEFT JOIN в sql запросе и сравнить значение ячеек?

Как добавить третий LEFT JOIN в sql запросе и сравнить значение ячеек?


     08.12.2016    MySQL, Ламерские вопросы    1320

вопрос
Доброго времени суток, помогите правильно подправить запрос, добавив в него третий префикс.

Вот исходный запрос
$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.serial_id, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_series p LEFT JOIN " . PREFIX . "_series_extras e ON (p.id=e.news_id)";


Мне необходимо добавить третий префикс, чтоб бралось id с таблицы _post (которой в запросе еще нет) и оно совпадало с p.serial_id.
Пытаясь добавить как с left join/right join так и без него, вижу ошибки в запросе

Ответил: PunPun


$sql_select = "SELECT o.id as newsid, p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.serial_id, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_series p LEFT JOIN " . PREFIX . "_series_extras e ON (p.id=e.news_id) LEFT JOIN " . PREFIX . "_post o ON (p.serial_id=o.id)";

4 комментария

DomiTori
Юзер

DomiTori - 8 декабря 2016 08:39 -

Gameer, увы ошибка
http://prntscr.com/dgr3ok

DomiTori
Юзер

DomiTori - 8 декабря 2016 09:05 -

Gameer, увы ошибка

MySQL Error!
MySQL error in file: /engine/modules/functions.php at line 1941
Error Number: 1052
The Error returned was:
Column 'id' in where clause is ambiguous
SQL query:

SELECT o.id as newsid, p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.serial_id, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_series p LEFT JOIN dle_series_extras e ON (p.id=e.news_id) LEFT JOIN dle_post o ON (p.serial_id=o.id) WHERE (id IN ('1','2','3','4','5','6','7','8','9')) AND (id IN ('1','2','3','4','5','6','7','8','9')) AND approve=1 AND date < '2016-12-08 08:46:21' ORDER BY date DESC LIMIT 0,10

LazyDev
PHP-developer

LazyDev - 8 декабря 2016 09:30 -

DomiTori, ошибка в том что ты не указываешь нужный id с нужной таблицы а не в моем ответе. MySQL просто в полном хаосе и не может понять откуда подтягивать данные. Составь верно запрос и проблем не будет. (это касается части после WHERE)

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

DomiTori
Юзер

DomiTori - 8 декабря 2016 12:24 -

Gameer,
ясно, спс, будем думать. Мб через код решу.
Этот запрос делается переделанным customом
{series serial_id="1" template="series/shortseries"}
и выводит мне сейчас все подрят. хотелось бы уточнить при выборке что serial_id должно соответствовать id в _post

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

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

наверх