2013-03-24 92 views
0

我需要你的帮助,一件小事。我有两张表,我需要从第一个表中获取人员的姓名和ID列表。然后使用此列表获取与这些人相关的服务。 请记住,我需要名称和ID来标识服务。结合多种选择的结果

查询类似于以下内容:

$query = "SELECT id, name from person where customerType='specificType'; 
$result = mysql_query($query,$this->connection); 

通过这个查询的结果,我环路获得的服务列表后:

While ($list=mysql_fetch_array($result)) 
{ 
    $query = "SELECT serviceID, serviceName from services 
    where assignedToName='".$list['name']."' and assignedToID=".$list['id']; 
$result2 = mysql_query($query,$this->connection); 

if(!$result2 || mysql_num_rows($result2) <= 0) 
{//I do nothing} 
else{ 
    if(isset($servicesList)) 
     { 
      //Here is the part that is not working, How to combine the results?? 
    $servicesList .= $result; 
     } 

     else $servicesList=$result; 
    } 
} 
//End While 


if(isset($servicesList)) 
{ return $servicesList;}else { 
return 'error'; 

}

在此先感谢...

+2

运行结果的另一个查询一个循环内各个查询是惊人,效率低下。埃里克给了你一个更好的方式来做到这一点。 – 2013-03-24 14:57:00

回答

3

请考虑使用join,只是o ne查询。

事情是这样的:

SELECT 
    p.id, 
    p.name, 
    s.serviceID, 
    s.serviceName 
FROM 
    person p 
LEFT JOIN 
    services s 
ON 
    (p.id = s.assignedToID 
    AND 
    p.name = s.assignedToName) 
WHERE 
    p.customerType='specificType' 
+0

谢谢,我一直有JOINs的问题,这完美的作品 – ninazz 2013-03-25 06:46:06