Запрос данных из двух таблиц и вывод через while

127
03 августа 2019, 22:10

Есть две таблицы comments и users. Они связаны между собой. Необходимо получить данные из обеих таблиц в одном запросе. Делаю такой запрос

$Result = mysqli_query($CONNECT, 'SELECT comments.id, comments.added, comments.date, comments.text, users.id, users.fname, users.lname, users.avatar, users.login FROM comments, users ORDER BY comments.id DESC');

И вывожу:

while ($Row = mysqli_fetch_assoc($Result)) { echo '
  <h6 class="comment__name">
  <a href="/users/'.$User['login'].'">'.$Row['fname'].' '.$Row['added'].' '.$Row['lname'].'</a></h6>
  <span>'.$Row['date'].'</span>
  <div class="comment__content">'.$Row['text'].'</div>
';}

Проблема в следующем: одну и ту же строку while выводит 2 раза.

Спасибо Mike за подсказку, решение:

$Result = mysqli_query($CONNECT, ('SELECT comments.id, comments.added, comments.date, comments.text, users.id, users.fname, users.lname, users.avatar, users.login FROM comments, users WHERE comments.added = users.login ORDER BY comments.id DESC'));
Answer 1

Если таблицы связаны по id используйте, например, такой запрос:

SELECT
   c.id,
   c.added,
   c.date,
   c.text,
   u.fname,
   u.lname,
   u.avatar,
   u.login
FROM 
   comments c,
   users u
WHERE c.id = u.id
ORDER BY c.id DESC

или используйте join.

Answer 2

Если сам запрос возвращает по 2 строки, добавь DISTINCT после SELECT

SELECT DISTINCT comments.id, comments.added, comments.date, comments.text, users.id, users.fname, users.lname, users.avatar, users.login 
FROM comments, users 
ORDER BY comments.id DESC
READ ALSO
Contact form 7 добавление кода PHP

Contact form 7 добавление кода PHP

На сайте под управлением Wordpress есть форма сделана c помощью плагина Contact Form 7Как добавить во входящий имейл из формы еще функцию get_page_link() Мне...

113
Ошибка компиляции кода из книги Р.Лафоре

Ошибка компиляции кода из книги Р.Лафоре

Учу язык С++ по книги РЛафоре "Объектно-ориентированное программирование на С++"

86