PHP MYSQL在具有公共字段的两个表上选择查询

时间:2015-06-03 02:36:53

标签: php mysql

我需要从两个具有相同列(租约)的表中获取记录。我使用下面的代码从表(行)中获取记录,其中$ 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>";*/


}

1 个答案:

答案 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