PHP SQL 查询根据另一个表中的值显示某些结果

标签 php mysql sql database-table

现在,我有两个数据库表。表history_2014 有一个列(成员),用于说明成员是否处于事件状态(Y 或N)。我有另一个名为history_overall 的表,其中包含这些成员的所有联系信息。我需要一个仅显示活跃成员的 History_overall 行的表格。现在,我有这个 PHP:

<?php
$con=mysqli_connect("localhost","myusername","mypassword","mydatabase");
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM history_overall");

echo "<table border='1'>
<tr>
<th>Address 1</th>
<th>Last Name</th>
</tr>";

while($row = mysqli_fetch_array($result)) {
  echo "<tr>";
  echo "<td>" . $row['address1'] . "</td>";
  echo "<td>" . $row['last_name'] . "</td>";
  echo "</tr>";
}

echo "</table>";

mysqli_close($con);
?> 

当前代码将允许我显示所有行,但我需要能够根据另一个表显示某些行。

最佳答案

哪一列将两个表连接在一起? 如果存在关系,则 JOIN 将完成此操作。

示例:

SELECT history_overall.* FROM members
JOIN history_overall
ON history_overall.member_id = members.id
WHERE members.active = 'Y';

----编辑/评论----

由于我无法在评论中添加表结构布局,因此我将在此处进行评论。 当想要从数据库中检索特定记录以向我们提供表架构而不是实际的表名称时,它更有值(value)。以及您想要的结果数据的示例。

您真正向我们提供的只是表history_2014,其中包含列(member = Y|N)、表history_overall 包含列 (address1, last_name),这不允许我们在两个(或更多)表之间建立关系。

以下示例假设两个表都有一个 memberid 列:

-----------------------           -------------------------------------
|      table1         |           |              table2               |
-----------------------           -------------------------------------
| member | memberid   |           | address1   | full_name | memberid |
-----------------------           -------------------------------------
| Y      | 1          |           | 123 street | jon doe   | 1        |
-----------------------           -------------------------------------
| N      | 2          |           | 789 court  | jane doe  | 2        |
-----------------------           -------------------------------------
| Y      | 3          |           | 456 road   | foo bar   | 3        |
-----------------------           -------------------------------------

问题:如何从table2中检索table1中成员为“Y”的记录?

这是我想要的记录结果:

-------------------------------------
|             recordset             |
-------------------------------------
| address1   | full_name | memberid |
-------------------------------------
| 123 street |  jon doe   | 1       |
-------------------------------------
| 456 road   |  foo bar   | 3       |
-------------------------------------
<小时/>

回答查询:

选择表2.* 从表1 连接表2 ON table1.memberid = table2.memberid WHERE table1.member = 'Y'

解释:

从 table1 中 member 列包含 Y 作为值的行中检索 table2 中与 table1 中的 memberid 列与 table2 中的 memberid 列相同的所有列,不排序,也不限制返回的记录数。

关于PHP SQL 查询根据另一个表中的值显示某些结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24537141/

相关文章:

php - 提供管理员用户名和密码后,将用户重定向到 admin.php 页面

php - 设法将 Mysql 时间戳格式化为英国日期格式,但无法包含时间

php - 处理两个 $_POST 时出现警告 : array_merge(): Argument #1 is not an array,

mysql - 默认的mysql选择顺序

MySQL 变量替换

php - mysqli_free_result 有必要吗?

php - mysql #1067 - 'created_at' 的默认值无效

sql - 递归sql问题

mysql - 需要帮助安装 MySQL

mysql - 限制 SQL Server 2008 查询执行