php - select multiple tables mysql
I am trying to select two tables with where clause,
The problem: I am getting more than 2 result. something like 123451111
I only have two ids with the value 1. I think I am doing it wrong.
The tables don't have the same structure and are not related by any means. Any ideas?
<?php include_once("config.php");
$s = '1';
$stmt =$mydb->prepare("select * FROM table1,table2 where table1.id = ? or table2.id = ?");
stmt->bind_param('ss', $s, $s);
echo $mydb->error;
$stmt->execute();
?>
<?php
$results = $stmt->get_result();
while ($row = $results->fetch_assoc()) {
echo $row['id']."<br/>";
}
?>
Answer
Solution:
You need to have a join between table1 and table2 on some unique column, say id.
select * FROM table1,table2 where table1.id = table2.id;
Additionally you can have multiple filter conditions( say you want to filter the tables on id=101 -
select *
FROM table1,table2
where table1.id = table2.id
and table1.id = 101;
Hope this helps. Whenever you have multiple tables in a SQL statement, you need to join them otherwise the engine would make cartesian product as it happens in Cartesian product of mathematical set theory.
Basically you should have at least n-1 join conditions where n is the number of tables used.
Answer
Solution:
Your question is a little problematic, but if your problem is not getting two id's, but you are getting one correctly with the use of a JOIN, you may be looking for a IN clause:
SELECT *
FROM table1,table2
WHERE table1.id = table2.id
AND table1.id IN (ID1, ID2);
Using IN instead of = lets you match multiple values to the table.id. This way, you get data from both tables and you get both ID's
Answer
Solution:
This is join usage :
select t1.*,t2.* FROM table1 t1
left join table2 t2
on t1.id = t2.id
where t1.id = "keyword"
Source