2013-03-24 3 views
0

Мне нужна ваша помощь с небольшой штукой. У меня есть две таблицы, мне нужно получить список имен и идентификаторов людей из первой таблицы. Затем используйте этот список, чтобы получить услуги, связанные с этими людьми. Пожалуйста, имейте в виду, что мне нужно имя и идентификатор для идентификации службы.Объедините результаты множественного выбора

запрос похож на следующем:

$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

Выполнение отдельных запросов в цикле результатов из другого запроса ужасающе неэффективна. Эрик дал вам лучший способ сделать это. –

ответ

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

Смежные вопросы