PHP / MYSQL: получить два элемента из таблицы в соединении, используя разные критерии

0

Я делаю соединение между таблицами, чтобы получить пользовательский рисунок из таблицы пользователей о ком-то, кто комментирует статью. Тем не менее, мне нужно получить отдельную картинку из таблицы пользователей для другого пользователя, человека, который написал статью одновременно. (Существует серьезная причина для этого в одном запросе, поскольку это фактически только одна часть более сложного запроса).

Может ли кто-нибудь предложить, как я мог бы получить две пользовательские фотографии из таблицы users во время соединения? Этот код дает мне первый пользовательский pic, комментарий pic или upic. Но как я могу получить второй пользовательский pic?

commments
id|comment|articleid|userid
1|great article|1|2

article
id|article|userid
1|Restaurant Openings|1

users
id|pic
1|mary.png
2|joe.png

$sql = "SELECT c.comment,c.articleid,c.userid,u.id, u.pic as upic,a.id,    
FROM 'comments' c 
LEFT JOIN 'articles' a 
ON c.articleid = a.id 
LEFT JOIN 'users' u
ON c.userid= u.id 
WHERE c.id=1";

Отдельным запросом для получения авторского рисунка будет:

$sqlauthorpic = "SELECT u.pic,u.id from 'users' u
WHERE u.id = 1";

Спасибо за любые предложения.

  • 0
    как должен выглядеть вывод?
  • 0
    Я ищу что-то вроде "mary.png" как apic в дополнение к joe.png как upic. Этот запрос на самом деле является частью большего, который возвращает json.
Теги:

1 ответ

1
Лучший ответ

Присоединитесь к users снова на этот раз с таблицей article, так как вы ищете пользователя, который написал статью:

SELECT c.comment,c.articleid,c.userid,u.id, u.pic as upic,a.id, w.pic as wpic    
FROM 'comments' c 
LEFT JOIN 'articles' a ON c.articleid = a.id
LEFT JOIN 'users' u ON c.userid= u.id
JOIN 'users' w ON w.id = a.userid

Вы также можете избавиться от объединений LEFT, потому что, я думаю, не может быть никаких комментариев из статьи (articleid) и без комментариев без userid.

  • 0
    Отлично. Не знал, что вы можете присоединиться к одному столу дважды. Это работает как шарм.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню