我需要从两个具有相同列(租约)的表中获取记录。我使用下面的代码从表(行)中获取记录,其中$ q等于(lease)列。这工作正常,但我想从同一个选择查询中也有一个(租约)列的不同表(单位)中获取记录,并在while循环中使用所有这些记录。下面是我目前用于从一个表中提取数据的代码,有人可以帮我修改代码以从两个表中提取数据。这可能吗?或者我是以错误的方式来做这件事的?我试过调查JOIN,但我似乎无法理解它,试过很多例子,但似乎都没有。
$sql = "SELECT * FROM rows WHERE lease = '".$q."'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo "row " . $row["row_id"]. "Capacity" . $row["capacity"]. "<br>";*/
}
答案 0 :(得分:2)
要从两个共享公共值的表中获取值,请使用join
。
例如:
select *
from table1
inner join table2
on table1.common_field = table2.common_field
此查询会为您提供所有匹配的行,并排除那些不匹配的行。
如果您希望获取第一个表中的所有行以及与第二个表匹配的行,请将inner join
更改为left join
。
这将为您提供table1中的所有行,table2中的所有匹配行以及table2中行不匹配的null
值。
由于您使用的是PHP - 如果表中包含具有相同名称的其他字段,您需要在select查询中对它们进行别名,以使它们在结果集中全部可用。 (即select table1.somevalue as value1, table2.somevalue as value2
)