MySQL запрос соединения таблиц для создания ленты новостей
Я хочу получить строки из 3 таблиц - LikeTable, ClosetTable, FollowTable, чтобы отобразить действия всех пользователей, за которыми следит человек. Это для веб-сайта. ClosetTable - таблица для продуктов пользователя. LikeTable - это таблица для лайков продуктов и Followtable для следующих и подписчиков.
В настоящее время у меня есть
SELECT c.user, c.productName
FROM ClosetTable AS c
LEFT JOIN FollowTable AS f ON c.user = f.isFollowed
WHERE f.follows = 'tony'
Это возвращает строки человека, "Тони" следует вместе с именем продукта. Однако я хочу, чтобы строки из LikeTable и FollowTable были одинаковыми. Таким образом, вы можете предложить способ сделать только 1 запрос, чтобы получить строки из всех 3 таблиц?
2 ответа
Вы можете попробовать что-то похожее на это:
SELECT c.user, c.productName
FROM FollowTable AS f
INNER JOIN ClosetTable AS c ON c.user = f.isFollowed
INNER JOIN LikeTable AS l ON c.user = l.userliked
WHERE f.follows = 'tony'
Я делаю некоторые предположения для имени поля, так как вы не предоставили структуры ваших таблиц.
Кроме того, я предложил вам добавить FollowTable в предложение FROM, а затем присоединить его к ClosetTable, так как вы добавили f.follows = 'tony' в свое предложение WHERE.
В противном случае удалите предложение WHERE и поместите условие в INNER JOIN. Что-то вроде:
LEFT JOIN FollowTable AS f ON c.user = f.isFollowed AND f.follows = 'tony'
Больше СОЕДИНЕНИЙ:
SELECT c.user, c.productName
FROM ClosetTable AS c
LEFT JOIN FollowTable AS f ON c.user = f.isFollowed
JOIN LikeTable as l on c.user = l.liked
WHERE f.follows = 'tony'
или что-то типа того. Вы не ограничены одним JOIN.