我拉出一个目录的主列表并循环,然后嵌套在循环中我拉出一组与每个目录匹配的注释。
在下面的示例中,我如何不显示dir 3和dir 4列表?它们代表类别的徽标,如果结果为空,我不希望这些徽标出现。我读过关于内连接的文章,但它似乎不符合这个需求,或者至少我不理解它。
为了简化这篇文章,我去掉了很多html表格和结构。这个想法是,外部循环运行所有的目录,但我不能真正检查内部(据我所知),看看它是否应该列出。我将阅读下面由非常有用的帖子发布的左连接选项。
$sql_dir="SELECT dirid FROM lit_directories";
$result_dir=mysql_query($sql_dir);
while ($row_dir=mysql_fetch_assoc($result_dir)) {
edit here--> echo $row_dir['dirid'];
$sql_notes="SELECT notes, dirid FROM lit_notes WHERE dirid='".$row_dir['dirid']."'";
$result_notes=mysql_query($sql_notes);
while ($row_notes=mysql_fetch_assoc($result_notes)) {
echo $row_notes['notes'];
}
}
dirid notes
-----------------------
| dir 1 | notes 1
| | notes 2
| | notes 3
-----------------------
| dir 2 | notes 1
| | notes 2
-----------------------
| dir 3 | <---- I don't want these last 2 dir lists to show
| | since they are empty
-----------------------
| dir 4 | <----
| |
-----------------------发布于 2013-03-05 18:06:48
试试这个:
$sql_dir="SELECT l.dirid, notes FROM lit_directories l LEFT JOIN lit_notes n ON n.dirid = l.dirid WHERE n.notes IS NOT NULL";
$result_dir=mysql_query($sql_dir);
while ($row_dir=mysql_fetch_assoc($result_dir)) {
echo $row_notes['notes'];
} 发布于 2013-03-05 18:10:11
我将推荐Preet Sangha建议的内容。否则,如果找不到备注,则可以跳过该行。
例如,
$sql_dir="SELECT dirid FROM lit_directories";
$result_dir=mysql_query($sql_dir);
while ($row_dir=mysql_fetch_assoc($result_dir)) {
$sql_notes="SELECT notes, dirid FROM lit_notes WHERE dirid='".$row_dir['dirid']."'";
$result_notes=mysql_query($sql_notes);
while ($row_notes=mysql_fetch_assoc($result_notes)) {
if($row_notes['notes'] == ''){
continue;
}
echo $row_notes['notes'];
}
}但在性能方面,我认为应该使用Preet Sangha的解决方案。
https://stackoverflow.com/questions/15220900
复制相似问题