如何使用PHP循环基于MySQL数据库中两个表的匹配值提取数据?
在table_x上我有ZIPCODE列,在table_y上我有ZIPCODE和STREETCODE这样:
+-----+---------+ +---------+------------+
| id | zipcode | | zipcode | streetcode |
+---------------+ +---------+------------+
| 01 | 1234001 | | 1111001 | 123 |
+---------------+ +---------+------------+
| 02 | 1234002 | | 1234001 | 456 |
+---------------+ +---------+------------+
table_x table_y
我想使用table_y中匹配的街道代码从table_x中提取每一行但我不确定要使用哪个join
以及我是否应该用foreach
替换while
循环来实现我的目标。
$sql = 'SELECT * FROM table_x ORDER BY id';
foreach ($db->query($sql) as $row) {
echo $row['zipcode'] . "<br>";
// select from other table
}
最后,将每一行输出为包含街道代码的邮政编码..
答案 0 :(得分:2)
如果关联的表具有相同的列名NATURAL JOIN
并且列具有相同的数据类型,请使用zipcode
。
SELECT *
FROM table_x
NATURAL JOIN table_y
或在INNER JOIN
zipcode
SELECT *
FROM table_x
INNER JOIN table_y
ON table_x.zipcode=table_y.zipcode
答案 1 :(得分:1)
您可以使用加入查询,
$dbh = new PDO('mysql:host=localhost;dbname=database', $user, $pass);
//replace table_x, y with your table names
$sql = "SELECT table_x.zipcode, table_y.streetcode
FROM table_x
INNER JOIN table_y ON table_x.zipcode=table_y.zipcode";
$stmt = $dbh->prepare($sql);
if ($stmt->execute()) {
while ($row = $stmt->fetch()) {
print_r($row);
}
}