2014-03-26 124 views
0

虽然填充基于来自不同表的id和标签表,它出现了明显的有一定可能是使用LEFT JOIN用更少的代码和更直接的方式达到相同的结果的更好的方式,但我很疑惑经过努力,如果它确实能够实现所期望的结果来制定。LEFT JOIN的MySQL/PHP

我在想一个LEFT JOIN纠正在这种情况下使用?

引用对其中一个列出的ID与另一个表和其他表已标题为每个参考分配彼此的两个表?

我清楚地知道,如果对每行LEFT JOIN那里有独立的信息是适当的,但如果在这种情况下,只有几个孤单的id为许多行引用,我只是自己还不怎么我能得到它的工作..点击。

目前这样我能实现我的PHP期望的结果/ MySQL的数据

$itemid = $row['item_id']; 

$secid = mysql_query(" SELECT * FROM item_groups WHERE item_id='$itemid' "); 
while ($secidrow = mysql_fetch_assoc($secid)) { 
    //echo $secidrow["section_id"]; //testing 
    $id = $secidrow["section_id"]; 

    $secnameget = mysql_query(" SELECT * FROM items_section_list WHERE item_sec_id='$id' "); 
    while ($secname = mysql_fetch_assoc($secnameget)) { 
     echo $secname["section_name"]; 
    } 
} 

例 项目组 :喝 :食品 :货架

项目清单 的itemId,的groupId

组列表 的groupId,groupTitle

所以输出数据到表,而不是输出的想法“项目& ID号,以代替识别码的标题居然出现。

我已经取得了理想的结果,但我一直有兴趣在寻求更好的方法来达到预期的效果。

+0

完美的时间使用左连接(至少在我看来)。我已经张贴的答案,应该帮助。 – DragonYen

回答

0

如果我正确破译你的代码,你应该可以使用下面的查询同时得到这两个值。

$itemid = $row['item_id']; 

$secid = mysql_query(" 
    SELECT * 
    FROM item_groups 
    LEFT JOIN items_section_list 
     ON items_section_list.item_sec_id = item_groups.section_id 
    WHERE item_id='$itemid' 
"); 

while ($secidrow = mysql_fetch_assoc($secid)) { 
    //$id = $secidrow["section_id"]; 
    echo $secidrow["section_name"]; 
}