php - 多个查询还是可以一次完成?

标签 php mysql

我对更高级的 MySQL 查询内容不太有经验..(主要是基本查询、返回和解析响应..等)

但是..当我需要来自数据库的多个内容(响应)时,我不清楚正确的方法。.有没有办法从单个查询中获取这些内容?或者我是否需要每次都进行新的查询?

背景: 我使用 PDO 执行 SELECT 语句

即:

$getAllVideos_sql = "SELECT * as FROM $tableName WHERE active IS NOT NULL OR active != 'no' ORDER BY topic, speaker_last, title;";
$getAllVideos_stmt = $conn->prepare($getAllVideos_sql);
$getAllVideos_stmt->execute();
$getAllVideos_stmt->setFetchMode(PDO::FETCH_ASSOC);
$results = $getAllVideos_stmt->fetch(PDO::FETCH_ASSOC);

//parse as I see fit

这为我提供了“数据 block ”,我可以根据需要将其分开并显示。

但是..我还希望能够提供一些统计数据(总计)

对于“主题”总数(不同的)以及“标题”总数(默认情况下都应该是唯一的)

我需要再次执行另一个查询、准备、执行、setFetchMode、提取吗?

这是执行此操作的正确方法吗?或者有没有办法抄袭已经在运行的初始命令?

需要明确的是,我并不是真的在寻找查询...我只是想了解一个人执行此操作的正确方法...当他们像我一样需要多条数据时?多个查询和执行......等等?

或者也许它可以而且应该在一个片段中完成?调整查询本身以返回子选择/查询信息?

  • 这不是正确的语法,因为它只返回 1 条记录..(但是主题总数似乎是正确的,即使我只返回 1 条记录)

    SELECT *,count(DISTINCT主题)作为totalTopics,count(DISTINCT标题)作为totalTitles FROM $tableName;

也许这是更合适的方法?尝试在主查询中包含这些总计/详细信息以进行挑选?

希望这是有道理的。

谢谢

最佳答案

我认为你不会得到任何非常干净的东西来做到这一点,但是像这样的东西可能会起作用:

SELECT * from $Table t
INNER JOIN (
    SELECT COUNT(DISTINCT Topic) as TotalTopics FROM $Table 
) s ON 1 = 1
INNER JOIN (
    SELECT COUNT(DISTINCT Title) as TotalTitles FROM $Table 
) f ON 1 = 1
WHERE ( Active IS NOT NULL ) AND Active != 'no'

关于php - 多个查询还是可以一次完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38105022/

相关文章:

javascript - 从 $_POST PHP 获取值(value)

php - 项目名称相同的两个数值之间的差异

php - 使用简单的 PDO 查询未将发布值输入数据库

php - 如何在 PHP 和 MySQL 中操作数组?

php - 匹配带星号的字符串

php - 如何将2个不同表中的xml数据复制到mysql

php - utf8表中插入奇怪的字符

mysql - MySQL如何检测非数字字符?

java - Android Room - 处理对象中的对象列表和查询结果

php - 如何在 Symfony 中设置数据转换器以重用现有实体?