我正在学习如何使用MySQL,目前我成功地从我的表中显示数据,使用:
while($objResult2 = mysqli_fetch_assoc($objQuery_product)) {
使用此变量$objResult2["id_product"];
显示结果,这样我可以从数据库中获取任何我想要的字段:$objResult2["name"];
$objResult2["email"];
等。
但如果我在表格中有更多具有相同id_product
的行
我想写一个if
语句,它会重复id_product
重复。怎么做?如果这是一项很多工作,至少请告诉我正确的教程,我必须阅读。因为我正在尝试第二天修复此问题,并搜索谷歌但我没有找到我需要的东西,或者我可能理解它....
这是我的查询
$sql_product = "SELECT * FROM ps_product AS prod";
$join_product = " LEFT JOIN ps_product_lang AS lang ON lang.id_product = prod.id_product";
$join2_product = " LEFT JOIN ps_stock_available AS stok ON stok.id_product = prod.id_product";
$where_product =" WHERE prod.id_category_default = $idp AND lang.id_lang = 8";
$sql_product = $sql_product.$join_product.$join2_product.$where_product;
$objQuery_product = mysqli_query($objConnect, $sql_product) or die ("Error Query [".$sql_product."]");
答案 0 :(得分:0)
好的,我们走了。例如,您使用此查询获取数据。
select id_product, name from PRODUCTS;
假设上面的查询为您提供了5条记录。
id_product名称 1蝙蝠 2曲棍球 2曲棍球 3鞋 4手套
现在你有2.2和曲棍球,曲棍球。而不是这样想你必须引入if语句来过滤重复记录或同名或id_product记录。
像这样重写你的SQL查询。
select distinct id_product, name from PRODUCTS;
或者,如果你需要每个人的数量,那么我的朋友你会写这样的查询......
Graham Ritchie,如果Andrei需要计算每个重复记录,那么我们将在查询中执行类似的操作。SELECT PRODUCT_ID,
COUNT(PRODUCT_ID) AS Num_Of_Occurrences
FROM PRODUCTS
GROUP BY PRODUCT_ID
HAVING ( COUNT(PRODUCT_ID) > 1 );
答案 1 :(得分:0)
您可以在查询中使用id_product
关键字简单地删除相同的DISTINCT
。如:
SELECT DISTINCT id_product FROM my_table
这将只为您提供不同ID的结果。
第二种方法是将数组内的输出值。
在你的while循环中:
$my_array[] = $objResult2["id_product"];
然后使用array_filter
删除数组中的所有重复项。
如果你想计算重复的值,你也可以使用array_count_values()
。
答案 2 :(得分:0)
SELECT id_product,COUNT(*) AS count
FROM tablename
GROUP BY id_product;
此查询将在您的查询中返回两个项目
$objResult2["id_product"] //and
$objResult2["count"]
if语句只是
if($objResult2["count"] > 1){
//Do whatever you want to do with items with more than 1 occurence.
//for this example we will echo out all of the `product_id` that occur more than once.
echo $objResult2["id_product"] . " occurs more than once in the database<br/>";
}