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

У меня есть 1 таблица для пользователя, 1 для комментариев и еще одна для друзей. Ниже приведена структура таблицы:

Таблица комментариев:

------------------------------------------------
| comment_id  | user_id_c | commentstatus      | 
------------------------------------------------
|  1          |   1       |   Sample comment 1 |
|  2          |   2       |   Sample comment 2 |
------------------------------------------------

Пользовательская таблица:

------------------------------------------------------
| id  | username            | password  |  Full name |
------------------------------------------------------
|  1  |   user1 (loggedin)  | Sample 1  |  John      |
|  2  |   user2             | Sample 2  |  Smith     |
|  3  |   user3             | Sample 3  |  Andrew    |
|  4  |   user4             | Sample 4  |  Victor    |
|  3  |   user5             | Sample 3  |  Robert    |  
-------------------------------------------------------

Столы друзей

---------------------------------------------------
| id  | friend1             | friend2   |   status   
---------------------------------------------------
|  1  |   user1             | user3     |  friend
|  2  |   user1             | user5     |  friend
|  3  |   user2             | user4     |  friend
---------------------------------------------------

в настоящее время, если какой-либо пользователь публикует комментарий, он вставляется в базу данных внутри таблицы комментариев. теперь, если я вошел в систему, я могу получить все свои комментарии из базы данных.

Чтобы объяснить, я хотел бы сообщить, что вы все можете видеть, что пользователь 1 дружит с пользователем 3 и пользователем 5 в соответствии с таблицей друзей.

Все, что я хочу, это получить комментарии для вошедшего в систему пользователя и для тех, кто дружит с вошедшим в систему пользователем. однако я не могу понять, как я могу получить комментарии вошедшего в систему пользователя и его друзей вместе.

сценарий, который я использую для получения своих сообщений, выглядит следующим образом:

public function comments(){
            global $pdo;
            $query = $pdo->prepare("SELECT u.*, c.* FROM users u INNER JOIN comments c ON u.id = c.user_id_c WHERE u.id = ".$_SESSION['sid']." ORDER BY c.comment_id DESC");
            $query->execute();
            return $query->fetchAll();
        }

а затем получение комментариев, используя приведенный ниже код:

$comments  = $get->comments();

Потом :

foreach($comments as $row){

echo $row['Full name']; //user name from user table in the database
echo $row['commentstatus']; //comment from comments table in the database

Он отлично извлекает данные для вошедшего в систему пользователя. Возможно ли, что я могу получать комментарии от друзей вошедшего в систему пользователя также с комментариями вошедшего пользователя из базы данных одновременно.

обновите свой вопрос, добавьте правильный образец данных и ожидаемый результат

ScaisEdge 14.07.2019 14:06

структуры таблиц помогут нам. В качестве примечания: вы смешиваете подготовленные операторы с обычными.

ths 14.07.2019 14:09

Я обновил свой вопрос и также упомянул структуру таблицы.

Shivkesh Dwivedi 14.07.2019 15:07

просто совет, обычно проще писать и тестировать запросы в отдельной программе, такой как PHPMyAdmin

GolezTrol 14.07.2019 15:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
158
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы ищете что-то вроде этого:

$query = $pdo->prepare("SELECT u.*, c.* FROM users u INNER JOIN comments c ON u.id = c.user_id_c WHERE u.id = ".$_SESSION['sid']." OR c.user_id IN (SELECT friend_id FROM friends WHERE friends.user_id = ".$_SESSION['sid'].") ORDER BY c.comments_id DESC"

Этот ответ частично сработал для меня, как когда я упомянул такой код: $query = $pdo->prepare("SELECT u.*, c.* FROM users u INNER JOIN comments c ON u.id = c.user_id_c WHERE u.id = 1 OR c.user_id_c IN (SELECT u.id FROM users WHERE id = 2) ORDER BY c.post_id DESC"); Однако, когда я помещаю переменную вместо «2», это не работает, вероятно, потому, что переменная содержит несколько идентификаторов пользователя. какие-либо предложения..??

Shivkesh Dwivedi 14.07.2019 17:39

Другие вопросы по теме