Я делаю небольшой сайт php, на котором вы можете следить за другими, а затем просматривать их посты.
У меня есть три таблицы
1.Posts, в котором есть post_id и author_id
2. следовать, который имеет последователей и последователей
3.users, который имеет идентификатор, имя пользователя и все остальное. Я пробую следующее в sql-
SELECT * FROM posts,follow,users WHERE posts.author_id=users.id AND users.id=follow.following AND follow.follower='$id' UNION SELECT * FROM posts,users WHERE posts.author_id=users.id AND users.id='$id'
Где $ id — это идентификатор пользователя, вошедшего в систему.
Он отображает следующую ошибку:
#1222 - The used SELECT statements have a different number of columns
Я искал часы, но не могу найти ответы, соответствующие моему запросу.
Я буду очень признателен за ответ с лучшей версией приведенного выше кода.
Заранее спасибо.
Возможно, JOIN будет служить вам лучше … что-то вроде этого:
SELECT * FROM posts
JOIN users on posts.author_id=users.id
JOIN followers on users.id=follow.following
WHERE follow.follower='$id'
Когда вы объединяете два запроса вместе, столбцы на обоих должны совпадать.
Вы выбираете из posts,follow,users
по первому запросу и posts,users
На втором.
это не сработает.
Имена столбцов из первого оператора SELECT используются в качестве имен столбцов для возвращаемых результатов. Выбранные столбцы, перечисленные в соответствующих позициях каждого оператора SELECT, должны иметь одинаковый тип данных