$sql = "select body, stamp from posts where user_id = '$userid' order by stamp desc";
ПРИМЕЧАНИЕ: вышеуказанный запрос работает нормально. Я хочу также выбрать имя пользователя из таблицы моих пользователей и отобразить имя пользователя, соответствующее user_id.
Я отредактировал вышеуказанный оператор так, и он не работает. Может кто-нибудь предложить правильный запрос? Моя цель – также показывать имена пользователей. в дополнение к простому отображению user_id.
$sql = "select body, stamp from posts AND username from users where user_id = '$userid' order by stamp desc";
Моя цель – также показывать имена пользователей. а не просто user_id.
Вам нужно будет использовать JOIN для объединения двух таблиц в соответствующее поле, так что примерно так:
$sql = "SELECT p.body, p.stamp, u.username FROM posts p INNER JOIN users u ON p.user_id=u.user_id WHERE p.user_id='$userid' ORDER BY p.stamp DESC";
Вы можете использовать имя таблицы для выбора столбцов. Пример:
$Query = "select table1.body, table1.stamp, users.username from posts, users where user_id = '$userid' order by stamp desc";
Но этот метод не очень хорош в производительности.
Лучший способ:
$Query = "SELECT table1.body, table1.stamp, users.username FROM posts INNER/LEFT/RIGHT JOIN users ON users.user_id = '$userid' AND users.user_stamp = stamp.stamp_id
Все таблицы должны быть связаны.
Приветствую,
$sql = "select body, stamp from posts , username from users where user_id = '$userid' order by stamp desc";
Я только что исправил синтаксическую ошибку в вашем запросе … это ключевое слово AND должно быть заменено на.
$sql = " select body, stamp from posts where user_id = '$userid' order by stamp desc UNION ALL select body, stamp from username where user_id = '$userid' order by stamp desc ";
Вы должны использовать псевдонимы или имя таблицы, чтобы избежать дублирования проблемы, как это
tablename.column
или
alias.column
вы можете установить псевдоним в своем предложении where:
FROM table as alias_name
$sql = "SELECT p.body,p.stamp,u.username from posts p LEFT JOIN users as u ON (p.user_id = u.user_id) WHERE user_id = '$user_id' ORDER BY p.stamp DESC";
должен это сделать
Попробуй это:
select body, stamp, username from posts p JOIN users a ON p.user_id = a.user_id WHERE p.user_id = '$userid' order by stamp desc
Это должно работать нормально:
SELECT posts.body, posts.stamp, users.username FROM posts, users WHERE posts.user_id = '$userid' AND posts.user_id = users.user_id ORDER BY posts.stamp DESC
select body, stamp, username from posts,users where users.user_id = post.user_id and users.user_id = '$userid' order by stamp desc;