PHP Объединить таблицы mysql - PullRequest
       5

PHP Объединить таблицы mysql

0 голосов
/ 05 августа 2020

Итак, у меня есть две таблицы:

Table1 (продажи)

  • ID
  • Ident
  • Date
  • Статус

Table2 (пользователи)

  • ID
  • Ident
  • Полное имя
  • Электронная почта

Вот как я запрашиваю значение:

<?php      
       $query = "SELECT * FROM sales WHERE status='OK' ORDER BY STR_TO_DATE(`date`, '%Y/%m/%d %H:%i:%s') DESC LIMIT 5";
           if ($result = $link->query($query)) {
                  $num_rows = 0;
                  while ($row = $result->fetch_assoc()) {
                      $num_rows++;
    
                      echo '<div class="my-box">';
                      echo "{$row['id']}";
                      echo "{$row['date']}";
                      echo "{$row['dbirth']}";
                      echo "{$row['email']}";
                      echo "{$row['ident']}";
                      echo '</div>';
                  }
                  $result->free();
              }
          ?>

Прямо сейчас оно повторяет ident для строки, но только для отображения Идентификатор, я должен был отобразить Fullname с идентификатором из Table2. Я пробовал что-то вроде SELECT * FROM sales LEFT JOIN users on sales.id = users.id, но это не дает мне Fullname. Есть советы?

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Я полагаю, что поле Ident будет первичным ключом в таблице пользователей и внешним ключом в таблице продаж. Если да, это вернет желаемый результат вместе с другими перечисленными полями из обеих таблиц.

SELECT sales.ID AS sales_ID,sales.Ident AS Identity,Date,Status,Fullname,Email FROM sales
INNER JOIN users ON sales.Ident = users.Ident
WHERE status='OK'
ORDER BY STR_TO_DATE(`date`, '%Y/%m/%d %H:%i:%s') 
DESC LIMIT 5

Если поле даты обновлено до date или datetime, просто используйте

ORDER BY DATE

Для Лучшая практика работы с базами данных:

  1. Вам необходимо изменить тип данных поля даты на date или datetime
  2. Вам необходимо иметь понимание концепции первичного и внешнего ключей в РСУБД.
  3. Вам необходимо выучить JOINS в SQL
0 голосов
/ 05 августа 2020

Ваш SQL кажется неправильным.

Когда вы присоединяетесь к таблицам, делайте так.

SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;

Если вы присоединитесь к таблицам правильно, вы сможете для получения столбца «Полное имя».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...