@from2003
Web developer

Как правильно выбрать данные из двух таблиц?

Есть таблица users с полем id и name
Есть таблица comments с полями text и author

На сайте можно добавить комментарий от пользователя, тогда в author пойдет ID его профиля, и анонимный комментарий, тогда в author пойдёт 0

Так вот, нужно сделать такой запрос, чтобы он выбрал все комментарии, и имена пользователей, где id пользователя = полю author, по идее это сделалось бы просто

select comments.text, users.name from comments, users where users.id = comments.author


Но не подходит, так как не возвращает те комментарии, которые сделаны анонимными пользователями, т.е. где comments.author = 0. Таблица, полученная в ответе на sql запрос просто не учитывает их, так как такого users.id = 0 нет.

Но мне нужны все комментарии и users.name, которое равно comments.author, а если такого user.id нет (в нашем случае 0), то ячейка была бы пустая.

Надеюсь понятно, что я имею ввиду, если такое сделать невозможно, то посоветуйте как хранить комментарии + анонимные комментарии в одной таблице и как при этом получать имена пользователей, которые сделали этот комментарий или пустые значения, если комментарий был сделан анонимно.
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
@IceJOKER
Web/Android developer
может тогда стоило бы сделать запрос таким - where users.id = 0 OR users.id = comments.author?
ну или:
SELECT * FROM comments c
LEFT JOIN users u ON u,id = c.author
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@from2003 Автор вопроса
Web developer
SELECT * FROM comments c
LEFT JOIN users u ON u,id = c.author


Да, это прям то что мне надо, немного оптимизировал под себя и заработало, огромное спасибо, я пол часа голову ломал. Можете пожалуйста дать какую-нибудь статью, где описано как это работает, LEFT JOIN и т.д., а то я вообще не понимаю как это заработало.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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