在根据不同表的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"];
}