php - 从多个表中选择行的最佳方法?

标签 php mysql sql database pdo

我正在创建一个 php 应用程序,现在正在创建数据库接口(interface)代码。在我的应用程序中,它们是三个表:user、network、user_network。他们有以下栏目:

  user<-------------------->user_network<-------------------->network
user_ID                       un_ID                            network_ID
user_Name                     un_Member                        network_Name
                              un_Network                       network_Description

我创建了以下查询,该查询查询 user_network 表并返回用户所属的所有网络的 ID:

$STH = $DBH->query("SELECT * FROM user_network WHERE nm_Member ='$userID'");

然后,我使用以下代码从该数组中提取 network_ID:

$DB_NetworkID = array();
foreach($STH as $row)
{
    $DB_NetworkID[$counter] = $row['nm_networkID'];
    $counter++;
}
print_r($DB_NetworkID);

该数组现在包含用户所属的所有网络 ID,如下所示

Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 )   //network IDs = 1, 3, 5, 7

我现在想从网络表中提取行,如何从 ID 包含在数组中的网络数据库中选择行?

感谢您的帮助。

最佳答案

您应该使用 JOIN 并使其成为单个查询:

SELECT 
    *
FROM 
    user
INNER JOIN
    user_network
ON
    user.user_ID = user_network.un_ID
INNER JOIN
    network
ON 
    user_network.un_Network = network.network_ID
WHERE
    user_ID = '$userID'

该查询将为您提供用户所属的所有网络。

关于php - 从多个表中选择行的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655823/

相关文章:

mysql - Group-concat 在 MySQL 中出错?

mysql - 在 Mysql 中更新表的属性时触发

mysql - 选择电子邮件之间的空间

php - 使用 Linux 服务器 shell 命令按计划运行 php 脚本

php - 选择一列的最大值,按另一列分组不起作用

mysql - 如果没有帖子,在查询结果中显示用户?

php - 需要有关修复 MySQL 数据库设计和表结构的建议

sql - COALESCE 的逆

php - mysql_real_escape_string 的 PDO 等效项是什么?

php - 处理不可避免的警告的正确方法