首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL嵌套表选择-如果外部表与内部表不匹配,则不显示

问MySQL嵌套表选择-如果外部表与内部表不匹配,则不显示
EN

Stack Overflow用户
提问于 2013-03-05 18:02:25
回答 2查看 82关注 0票数 1

我拉出一个目录的主列表并循环,然后嵌套在循环中我拉出一组与每个目录匹配的注释。

在下面的示例中,我如何不显示dir 3和dir 4列表?它们代表类别的徽标,如果结果为空,我不希望这些徽标出现。我读过关于内连接的文章,但它似乎不符合这个需求,或者至少我不理解它。

为了简化这篇文章,我去掉了很多html表格和结构。这个想法是,外部循环运行所有的目录,但我不能真正检查内部(据我所知),看看它是否应该列出。我将阅读下面由非常有用的帖子发布的左连接选项。

代码语言:javascript
复制
$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 |               <---- 
|       |                     
-----------------------
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-05 18:06:48

试试这个:

代码语言:javascript
复制
$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'];
}  
票数 2
EN

Stack Overflow用户

发布于 2013-03-05 18:10:11

我将推荐Preet Sangha建议的内容。否则,如果找不到备注,则可以跳过该行。

例如,

代码语言:javascript
复制
$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的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15220900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档