[英]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.