在彼此内部使用多个mysql查询循环

时间:2013-08-07 17:29:00

标签: php mysql join

我在彼此内部使用多个查询时遇到大麻烦。我搜索它但找不到我需要的东西! 所以这是我的问题。请帮助我。

我有一个名为“cat”的表,我通过mysql获得了标题,没关系。我有另一个名为works的表,其中有一个名为“Cat_ID”的字段,这是连接两个表的数据的字段。 works table有另一个名为“Years”的字段,它是艺术品制作的一年。

cat>> {ID,Title,...} 作品>> {ID,Title,URL,Year,Cat_ID,...}

我需要按年份对作品库进行分类,所以我制作了这样的代码:

<?php
$result = q("cat");
while($row = mysqli_fetch_array($result)) { ?>
  <div>
    <h2><a href="artwork.php?id=<?php echo $row['ID'] ?>"> <?php echo $row['Title']; ?></a></h2>
    <span>
    <?php
      $sql = "SELECT DISTINCT Year FROM works WHERE Cat=".$row['Cat_ID'];
      $yresult = mysql_query($sql);
      while ($yrow = mysql_fetch_row($yresult)) 
      {
        //and print it as anchor here but it wont get into loop at all!                         
      }                         
    ?>
    </span>
  </div>
<?php } ?>

q()是一个只连接到DB并运行查询的函数。这条线很好用。 但它根本不会进入内心!我检查并看到$ yrow是完全空的(通过php的EMPTY())! 我该怎么办呢?似乎mysql根本无法执行第二个查询!解决方案必须以我认为的两种方式。 1.使mysql执行第二个查询。 2.以明确获取年份的方式更改第一个查询,并通过mysql_fetch_array读取它们,并将年份作为每个的锚点通道。

请帮助我。

1 个答案:

答案 0 :(得分:0)

使用INNER JOIN

而不是多个循环
SELECT DISTINCT works.Year FROM cat INNER JOIN works ON (cat.ID = works.Cat_ID)