我有一个带有列(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();
?>
请参阅下面的屏幕截图,其中显示了多次返回的类别:
请参阅下面的产品表结构:
请参阅下面的rangecat表结构:
答案 0 :(得分:1)
鉴于您的查询具有相关表,那么“重复”来自于类别表中的相关行与其他表中的其他行。
如果您只想获得唯一的行,则必须使用select distinct
或group 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
获得唯一类别后,您可以创建第二个语句,以获取每个唯一类别的产品。
希望这有帮助