How to extract data based on matched values from two tables on MySQL database with PHP loop?
On table_x I have the column ZIPCODE and on table_y I have ZIPCODE and STREETCODE like this:
+-----+---------+ +---------+------------+
| id | zipcode | | zipcode | streetcode |
+---------------+ +---------+------------+
| 01 | 1234001 | | 1111001 | 123 |
+---------------+ +---------+------------+
| 02 | 1234002 | | 1234001 | 456 |
+---------------+ +---------+------------+
table_x table_y
I want to extract each line from table_x with the matching streetcode from table_y but i'm not sure which join
to use and if I should replace foreach
with a while
loop to achieve my goal.
$sql = 'SELECT * FROM table_x ORDER BY id';
foreach ($db->query($sql) as $row) {
echo $row['zipcode'] . "<br>";
// select from other table
}
Eventually, output each line as the zipcode with the streetcode next to it..
Use NATURAL JOIN
, if the associated tables have the identical column name zipcode
and the columns are of same data type.
SELECT *
FROM table_x
NATURAL JOIN table_y
Or use INNER JOIN
on zipcode
SELECT *
FROM table_x
INNER JOIN table_y
ON table_x.zipcode=table_y.zipcode
you can use join query,
$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);
}
}