2013-03-24 91 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