繁体   English   中英

合并两个MySQL表中的数据并使用PHP回显结果

[英]Combine data from two MySQL tables and echo results using PHP

我想合并来自两个MySQL表的数据并使用PHP回应结果。 第一个表称为TEST1,具有两个字段(名称,信息1)。 第二个表称为TEST2,并且也有两个字段(姓氏,info2)。 我想选择其中info1 = info2的名称和姓氏,并使用PHP在同一行中打印名称和姓氏。 到目前为止,我编写的代码是这样,但是对于我希望它完成的两个任务,我认为它并不完全正确。

$sql = "SELECT name, surname FROM TEST1, TEST2 WHERE info1 = info2";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo " - Name: " . $row["name"]. " - Surname: " . $row["surname"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

例如,假设TEST1的名称为info1 [(John,112233),(Luke,112244),(Ariana,112255)],TEST2的名称为info2 [(Lala,112255),(Zara,112233) ,(Azon,112267),(Esora,112248)]。 因此,我希望它在访问网页时显示:

Name: John - Surname: Zara
Name: Ariana - Surname: Lala

要么

Name: Ariana - Surname: Lala
Name: John - Surname: Zara

名称,姓氏,info1,info2是VARCHAR(64) 似乎有类似的问题,但对于不熟悉更高级脚本的PHP和MySQL初学者尤其不容易理解,因为它们特定于问询者的问题。 因此,我尝试着这样做,以帮助更多的人,而不仅仅是我。 请你帮助我好吗? 提前致谢。

首先,如果以这种方式存储信息数据,则会变得多余并消耗数据库中的更多空间。 如果您有多个姓名和姓氏指向不同的人,则可以在一个不同的表中使用一个特定的姓名和姓氏或他们的ID,然后在其中存储与该人对应的信息。

Table1 = {tableOneId, firstName}
Table2 = {tableTwoId, lastName}
Table3 = {tableThreeId, tableOneId, tableTwoId, info}

这样,您一次只能存储品种名称和姓氏,而每个人的信息则多余。 现在加入这些表以获得所需的信息。

Select * from `table1`
inner join `table3` on `table1`.`tableOneId` = `table3`.`tableOneId`
inner join `table2` on `table3`.`tableTwoId` = `table2`.`tableTwoId`

现在,您可以从结果集中选择名称和姓氏。

我将“ tableOneId”(或任何您喜欢的东西)作为外键添加到第二个表中,该外键等于第一个表的ID-这将使其成为主键。 据我了解,这是关系数据库的基本原理。

所以结构:

Table1 = {Id, firstName, info}
Table2 = {Id, lastName, info, tableOneId}

假设firstName和lastName始终引用一个唯一的人,并且由于某种原因您需要将此信息划分到两个不同的表中,则可以实现此策略以在一个表中将唯一标识符作为Id并将tableOneId设置为秒,以选择唯一的数据两个表中只有一个人。

查询可能是这样的:

Select * from `table1`, `table2` where `table1`.`Id` = `table2`.`tableOneId`;

暂无
暂无

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

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