首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不断删除其他产品页面的重复值

不断删除其他产品页面的重复值
EN

Stack Overflow用户
提问于 2019-08-16 15:16:55
回答 1查看 50关注 0票数 1

我不确定如何输入标题,所以我将在这里解释它。首先,这是我的数据库。(我将'product‘替换为'p’,以节省这里的数据库空间。

代码语言:javascript
复制
p_id|p_name|p_image      | p_category  | p_col | p_size
1   | Xs   |xsmax.png    | Smartphones | Coral | 64GB
2   | Xs   |xsmax.png    | Smartphones | Coral | 128GB
3   | Xs   |xsmax.png    | Smartphones | Coral | 256GB
4   | Xs   |xsmax.png    | Smartphones | Blue  | 64GB
5   | Xs   |xsmax.png    | Smartphones | Blue  | 128GB
6   | Xs   |xsmax.png    | Smartphones | Blue  | 256GB
7   | Xs   |xsmax.png    | Smartphones | Black | 64GB
8   | Xs   |xsmax.png    | Smartphones | Black | 128GB
9   | Xs   |xsmax.png    | Smartphones | Black | 256GB
10  | Xr   |xrmax.png    | Smartphones | Silver| 64GB
11  | Xr   |xrmax.png    | Smartphones | Silver| 128GB
12  | Xr   |xrmax.png    | Smartphones | Silver| 256GB
13  | Xr   |xrmax.png    | Smartphones | Black | 64GB
14  | Xr   |xrmax.png    | Smartphones | Black | 128GB
15  | Xr   |xrmax.png    | Smartphones | Black | 256GB
16  | Xr   |xrmax.png    | Smartphones | Gold  | 64GB
17  | Xr   |xrmax.png    | Smartphones | Gold  | 128GB
18  | Xr   |xrmax.png    | Smartphones | Gold  | 256GB


<?php
    include("dataconnection.php");

    if(isset($_GET['view'])) 
        {
            $name = $_GET["proid"]; //name of the product (example:Xr)
            $result = mysqli_query($connect, "SELECT * FROM products WHERE product_name = '$name' ");
            $row=mysqli_fetch_assoc($result);         
        }
?>



    <?php $result1 = mysqli_query($connect, "SELECT * FROM products WHERE (product_id, product_col) in ( SELECT MIN(product_id), product_col FROM products GROUP BY product_col  ) AND product_name='$name' "); ?>


          <div class="product-color">
            <span>Color</span>
            <div class="color-choose">
              <div>
                <?php while($row1=mysqli_fetch_assoc($result1))  { 
              echo $row1['product_col'];
            ?>              
                <?php           
                }
?>
              </div>

            </div>

          </div>

我想要显示每个产品可用的颜色,而不是显示重复的颜色。我想我是通过使用上面的查询来实现的,但是这个查询也适用于第二个产品。它是这样显示的。

单击Xs时(第1个产品)

代码语言:javascript
复制
Color I need = Coral, Blue, Black
Color shown = Coral, Blue, Black

当我单击Xr (第一个产品)时

代码语言:javascript
复制
Color I need = Silver, Black, Gold
Color shown = Silver,Gold

该查询适用于所有产品,因此删除了所有重复项,我希望它只从名称中删除重复的颜色,该名称是从proid获得的。

更新:由jameson2012解决

EN

回答 1

Stack Overflow用户

发布于 2019-08-16 15:29:56

您的第一个查询是多余的。您所需要的就是第二个查询(去掉最后那个无意义的部分)。顺便说一句,我怀疑您的第二个查询的效率低于更常见的形式之一,例如:

代码语言:javascript
复制
SELECT c.olumns
     , y.ou
     , a.ctually
     , w.ant
  FROM products x
  JOIN 
     ( SELECT MIN(product_id) product_id
            , product_name 
         FROM products 
       WHERE product_name = :name -- optional line
        GROUP 
           BY product_name  ) x
    ON y.product_name = x.product_name
   AND y.product_id = x.product_id

另请参阅准备好的查询和绑定查询的重要性

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

https://stackoverflow.com/questions/57520380

复制
相关文章

相似问题

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