繁体   English   中英

PHP 连接表 mysql

[英]PHP Join tables mysql

所以我有两张桌子:

表1 (销售额)

  • ID
  • 标识
  • 日期
  • 地位

表 2 (用户)

  • ID
  • 标识
  • 全名
  • Email

这就是我查询值的方式:

<?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标识的全名。 我尝试了类似SELECT * FROM sales LEFT JOIN users on sales.id = users.id ,但这并没有给我Fullname 有小费吗?

您的 SQL 似乎是错误的。

当你加入表时,这样做。

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

如果您正确加入表格,您将能够检索“全名”列。

我相信 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

如果日期字段更新为日期或日期时间,只需使用

ORDER BY DATE

为了更好的数据库实践:

  1. 您需要将日期字段数据类型更改为日期日期时间
  2. 您需要了解 RDBMS 中的主键和外键概念。
  3. 你需要在SQL中学习JOINS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM