如何只从SQL表中显示一次类别?

时间:2015-02-06 16:56:39

标签: php sql

我有一个带有列(prodCat)的产品表,这是一个ID列号,这与我设置的另一个表(rangecat)有关,它连接到一个列(rangeCatID)。

我的代码如下:

<?php 
     $querycat = "SELECT DISTINCT products.prodCat, rangecat.rangeCatTitle, rangecat.rangeCatSEO FROM products INNER JOIN ranges ON products.prodRangeID = ranges.rangeID INNER JOIN rangecat ON products.prodCat = rangecat.rangeCatID WHERE rangeSEO = '$seoname' AND prodState = 1";
      $resultcat = $conn->query($querycat);

      while($rowcat = $resultcat->fetch_object()){
      if ($page[3] == $rowcat->rangeCatSEO) { $state = ' class="onstate"'; } else { $state = ''; }
      echo '<li ' .$state. '><a href="/product/' . $prodsub .'/'. $rowcat->rangeCatSEO . '">' . $rowcat->rangeCatTitle . '</a></li>';
      }

      $resultcat->free();
?>

请参阅下面的屏幕截图,其中显示了多次返回的类别:

enter image description here

请参阅下面的产品表结构:

enter image description here

请参阅下面的rangecat表结构: enter image description here

1 个答案:

答案 0 :(得分:1)

鉴于您的查询具有相关表,那么“重复”来自于类别表中的相关行与其他表中的其他行。

如果您只想获得唯一的行,则必须使用select distinctgroup by。我会选择select distinct

SELECT DISTINCT category -- Or the appropriate column name
FROM products 
    INNER JOIN ranges ON products.prodRangeID = ranges.rangeID 
    INNER JOIN rangecat ON products.prodCat = rangecat.rangeCatID 
-- Add where conditions here

获得唯一类别后,您可以创建第二个语句,以获取每个唯一类别的产品。

希望这有帮助