Left join MySql/PHP


Left join MySql/PHP

在根据不同表的id和标签填充表的同时,显然必须有一种更好的方法可以用更少的代码和使用LEFT JOIN的更直接的方法来实现相同的结果,但我在试图弄清楚它是否真的能够实现预期的结果后感到困惑。

我认为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

将数据输出到表而不是输出"Item &Id Number,标题实际出现在Id Number的位置。

我已经达到了预期的结果,但我总是有兴趣寻求更好的方法来达到预期的结果。

如果我正确地破译了您的代码,您应该能够使用以下查询同时获得两个值。

$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"];
}