объединение 2 таблиц в msqli - PullRequest
0 голосов
/ 05 сентября 2018

стол сообщений

пользователи таблицы

как мне считать сообщения для конкретного пользователя, вошедшего в систему. Например, когда пользователь с идентификатором 3 вошел в систему, он должен показать мне 4 сообщения Я уже сделал это для общего количества сообщений:

<?php
$post_query1 = "SELECT count(*) AS total FROM posts "; 
$post_result1 = mysqli_query($db, $post_query1); 
$post1 = mysqli_fetch_array($post_result1); 
?>

Ответы [ 4 ]

0 голосов
/ 05 сентября 2018

Вот различные типы соединений в SQL:

(INNER) JOIN: Возвращает записи с совпадающими значениями в обеих таблицах

LEFT (OUTER) JOIN: Вернуть все записи из левой таблицы и сопоставленные записи из правой таблицы

RIGHT (OUTER) JOIN: Вернуть все записи из правой таблицы и сопоставленные записи из левой таблицы

FULL (OUTER) JOIN: Возвращать все записи, когда есть совпадение в левой или правой таблице

Примечание: Необходимо объединить две или более таблиц только с помощью внешнего ключа . Без внешнего ключа бессмысленно объединять две или более таблицы

Ссылка 1: https://www.w3schools.com/sql/sql_join.asp

Ссылка 2: https://www.tutorialspoint.com/mysql/mysql-using-joins.htm

Согласно Вопросу, что вы попросили присоединиться к столам

Запрос:

SELECT * FROM TABLE 1 JOIN TABLE 2 ON TABLE1.id = TABLE2.id WHERE TABLE2.ID=3

Пожалуйста, замените TABLE1 & TABLE2 на таблицы, которые нужно объединить, и id на внешний ключ, который вы указали в таблице.

Надеюсь, что в будущем вам будет полезно написать собственный код. Happy Coding:)

0 голосов
/ 05 сентября 2018

Попробуйте пример ниже:

select count(*) as total from user as u inner join post as p on  p.id_user = u.id_user AND u.id_user = 3
0 голосов
/ 05 сентября 2018

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

$query = "SELECT count(*) AS total FROM posts WHERE id_users = 3";

Но если вы хотите получить как количество сообщений, так и информацию о пользователях и другую информацию о записях, вам нужно будет выполнить запрос на объединение для таблиц users и posts. Ваш запрос теперь станет:

$query = "SELECT u.*, p.*, count(p.id_posts) FROM users AS u JOIN posts AS p ON u.id_users = p.id_users WHERE p.id_users = 3";

Некоторые полезные заметки

p.* - * - это символ подстановки, который означает получить все столбцы в таблице posts
u.* - * - это подстановочный знак, означающий получение всех столбцов в таблице users
posts как p - AS для псевдонимов. Итак, мы даем posts таблице временное имя.

0 голосов
/ 05 сентября 2018

Вы должны использовать только простое соединение.

SELECT count(*)
FROM USER u,
          post p
WHERE p.id_user = u.id_user
AND u.id_user = 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...