将表中行的值与另一个表

时间:2017-12-14 12:43:29

标签: php mysql

我有这两张桌子:

+---------------+--------+
|      id1      |  name  |
+---------------+--------+
| 1             | test   |
| 2             | teest  |
| 3             | teeest |
+---------------+--------+

+-----+------------+---------+-----------+---------+
| id2 |    date    | morning | afternoon | evening | 
+-----+------------+---------+-----------+---------+
|   1 | 2017-12-14 |     1   |      2    |     1   |
|   2 | 2017-12-15 |     2   |      1    |     3   |
+-----+------------+---------+-----------+---------+

我想要做的就是在echo中,在php文件中,第二个表的值,而不是数字,我想要回显第一个表的名称。

有人可以教我如何取得这个结果吗?

编辑:当我使用此代码时:

<?php
     $sql = mysqli_query($con, "SELECT * FROM table2");
     while ($row = mysqli_fetch_array($sql)) {
        echo "<center>" . $row['date'] . " " .$row['morning']. " " .$row['afternoon']. " " .$row['evening']. "</center>";
     }
?> 

我有结果

2017-12-14 1 2 1
2017-12-15 2 1 3

我希望这样:

2017-12-14 test teest test
2017-12-15 teest test teeest

感谢。

3 个答案:

答案 0 :(得分:0)

将第一个表中的值选择为数组,并在显示第二个表时,使用第二个表的值作为键。

示例:

$names = [1 => 'test', 2 => 'teest', 3 => 'teeest'];

echo $names[$secondrow["morning"]];

答案 1 :(得分:0)

如果我理解正确......

最好的是让那些带有INNODB引擎的表与表之间的关系,即在第二个表到第一个表之间定义foreign key

然后,您将使用您将从两个表接收数据的关系运行SQL查询到数据库,并在查询的SELECT部分中定义要显示的列。

SELECT atable.name, btable.* 
FROM btable
JOIN atable ON btable.name_id = atable.id;

以下是我的示例:http://sqlfiddle.com/#!9/e851e0/3

答案 2 :(得分:0)

您应该使用 JOIN

<强>查询

 select 
  `t2`.`id2`,
  `t2`.`date`,
  `ta1`.`name` as `morning`,
  `ta2`.`name` as `afternoon`,
  `ta3`.`name` as `evening`
from `table2` as `t2`
join `table1` as `ta1`
on `ta1`.`id1` = `t2`.`morning`
join `table1` as `ta2`
on `ta2`.`id1` = `t2`.`afternoon`
join `table1` as `ta3`
on `ta3`.`id1` = `t2`.`evening`;

<强> Fiddle demo