我对更高级的 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/