从几张表中选择行的最佳方法?

| 我正在创建一个php应用程序,现在正在创建数据库接口代码。在我的APP中,它们是三个表:用户,网络,用户网络。他们具有以下列:
  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\'
该查询将为您提供用户所属的所有网络。     
如果您的问题是与数组的比较,那么一个简单的解决方法是使用
FIND_IN_SET()
,如下所示:
$list = implode(\",\", $DB_NetworkID);   // turns it into \"1,3,5,7\"

... \"SELECT * FROM foo WHERE   FIND_IN_SET(network_ID, \'$list\')\";
为了获得更好的性能,您应该构造一个“ 7”子句。     
当然,使用“ 8”作为“ halfdan”说,是最好的方法。 但我会回答你的问题: 如果您的数组是这样的:   $ un =数组([0] => 1 [1] => 3 [2] => 5 [3] => 7)//网络ID = 1、3、5、7 您可以像这样使用
Foreach
:   Foreach($ un as $ key => $ value){ 您的查询将如下所示:   SELECT * FROM network WHERE network_ID = \'$ value \'     

要回复问题请先登录注册