2013-02-17 4 views
0

Я бегу это заявление, которое работает отлично ....Показать информацию из связанной таблицы?

$sql = "SELECT skill,SUM(quantity) as sum FROM skills 
WHERE userid = $userid 
GROUP BY skill"; 

Моя проблема заключается в умение столбец хранит значение из таблицы agency_skills, которая имеет столбец, который содержит имя навыка.

Я пытаюсь выяснить, как отображать имя навыка, а не значение, хранящееся в таблице навыков?

Это весь код, я работаю с .....

<?php 
defined('_JEXEC') or die; 

$db = JFactory::getDBO(); 
$user =& JFactory::getUser(); 
$userid = $user->get('id'); 


$sql = "SELECT skill,SUM(quantity) as sum FROM skills 
WHERE userid = $userid 
GROUP BY skill"; 

$db->setQuery($sql); 

$rows = $db->loadObjectList(); 

?> 
<style> 
table, td, th 
{ 
    border-bottom:1px solid black; 
} 
    { 
    th 
background-color:#000000 
color:#FFF 
    } 


</style> 

<table> 
<tr> 
<th width="195">Skill</th> <th width="195">Total Completed</th> 
</tr> 
</table> 
<table> 
<?PHP foreach ($rows as $row): ?> 

<tr> 

<td width="200"> <?php echo $row->skill?> </td> 

<td width="190"> <?php echo $row->sum ?> </td> 
</tr> 
<?php endforeach ?> 
</table> 

ответ

2

Вы можете присоединиться к этой таблице, как этот

SELECT as.skillname, 
     SUM(s.quantity) as sum 
FROM agency_skills as `as` 
left outer join skills as s on s.skill = as.id 
WHERE s.userid = $userid 
GROUP BY as.skillname 

Если вы используете left outer join вместо стандартного inner join вы получите даже skill с, которых нет в таблице skills.

Simplified SQL Fiddle demo

+0

Я думаю, что вы имели в виду ВЫБЕРИТЕ as.skillname или что-то поле называется, чтобы получить имя навыка против ид. Кроме этого, отличный ответ! – sgeddes

+0

Может быть. Не совсем ясно, как называются поля. Может быть, OP может принести немного света? –

+0

Вот структура таблицы .... –