我不确定如何输入标题,所以我将在这里解释它。首先,这是我的数据库。(我将'product‘替换为'p’,以节省这里的数据库空间。
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个产品)
Color I need = Coral, Blue, Black
Color shown = Coral, Blue, Black当我单击Xr (第一个产品)时
Color I need = Silver, Black, Gold
Color shown = Silver,Gold该查询适用于所有产品,因此删除了所有重复项,我希望它只从名称中删除重复的颜色,该名称是从proid获得的。
更新:由jameson2012解决
发布于 2019-08-16 15:29:56
您的第一个查询是多余的。您所需要的就是第二个查询(去掉最后那个无意义的部分)。顺便说一句,我怀疑您的第二个查询的效率低于更常见的形式之一,例如:
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另请参阅准备好的查询和绑定查询的重要性
https://stackoverflow.com/questions/57520380
复制相似问题