gpt4 book ai didi

php - 技巧问题;显示 'nr of results' 的 MySql 搜索

转载 作者:搜寻专家 更新时间:2023-10-30 22:22:03 25 4
gpt4 key购买 nike

我有一个分类网站,用户可以搜索广告。

结果显示在页面顶部的三个选项卡中。这三个是“所有”、“私有(private)”和“公司”。每个选项卡都附加了一个 nr,表示在该选项卡中找到的广告的编号。

例如:

  All     Private     Company
5 3 2

All就是private+company的总和!

我正在使用 MySql 作为数据库。

我正在尝试找出一种方法来找出每个选项卡的这些“找到的广告数量”。

我有一种方法可以做到这一点,就像这样,但让我很头疼,因为它太乱了:

$query = "SELECT SQL_CACHE * FROM classified WHERE classified.classified_id=$id";

if ($adtypes=="Private"){
$query_priv_comp = "SELECT SQL_CACHE * FROM classified WHERE priv_comp='Company'";
}
else {
$query_priv_comp = "SELECT SQL_CACHE * FROM classified WHERE priv_comp='Private'";
}

switch ($adtypes){
case "Private":
$query.= " AND classified.priv_comp='Private'";
break;

case "Company":
$query.= " AND classified.priv_comp='Company'";
break;
}

$qry_result = mysql_query($query); // main query
$result_priv_comp = mysql_query($query_priv_comp); // second query

$num_priv_comp = mysql_num_rows($result_priv_comp);
if ($adtypes=="All"){
$num_total = mysql_num_rows($qry_result);
}
else if ($adtypes!="All"){
$num_total=mysql_num_rows($qry_result) + mysql_num_rows($result_priv_comp);
}

if ($adtypes=="Private"){
$num_private = $num_total - $num_priv_comp;
$num_company = $num_priv_comp;
}
else {
$num_company = $num_total - $num_priv_comp;
$num_private = $num_priv_comp;
}

你知道还有什么其他方法可以做到这一点吗?

谢谢

顺便说一句:我也需要这些行,以便向找到的广告的用户显示信息!

最佳答案

这完全取决于您的需求。如果您只需要计数,则相对容易:

SELECT  count(*)                           count_all
, sum(if(priv_com = 'Private', 1, 0)) count_private
, sum(if(priv_com = 'Company', 1, 0)) count_company
FROM classified
WHERE classified.classified_id=$id

如果另一方面,您需要计数和行数据,您应该对数据和计数进行单独查询,或者使用技巧。假设你的表有一个 id 列,它是主键,你可以这样做:

SELECT  count(*)                           count_all
, sum(if(priv_com = 'Private', 1, 0)) count_private
, sum(if(priv_com = 'Company', 1, 0)) count_company
, classified.*
FROM classified
WHERE classified.classified_id=$id
GROUP BY id -- group by on primary key
WITH ROLLUP

WITH ROLLUP 魔法将为您提供一个额外的行,其中包含整个查询的计数。唯一的障碍是您将收到这一行作为整个结果的最后一行,所以如果您想在数据之前报告计数,您将不得不将行数据缓存在一个 php 数组左右并处理它稍后构建页面。

关于php - 技巧问题;显示 'nr of results' 的 MySql 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2310721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com