php - MySQL 将查询合并为一个

标签 php mysql subquery

让我解释一下我正在尝试做什么。首先,这是我目前的结果预览:

enter image description here

我的查询:

SELECT slides.name as slide, filename, time, sort_id 
FROM `slide_sort` 
INNER JOIN slides 
    ON slide_sort.slide_id = slides.id 
WHERE slide_sort.user_id = 1

所以每张幻灯片都是一个已经创建的页面,但是每个用户都可以指定在该页面上停留多长时间以及下一张“幻灯片”是什么。

所以 HTML 看起来像这样:(dashboard.php)

<meta http-equiv="refresh" content="40;url=did-you-know.php">

现在它是硬编码的,但我希望能够从数据库中提取它。


因此,在 dashboard.php 文件中,我可以在顶部添加一些内容,例如:$currentSlide = "Dashboard"; 这样我就可以添加到查询中 AND slide = $currentSlide 这样我就可以看到该幻灯片的时间是 40 秒,所以我可以将其粘贴到 content="$time" 中。但我的问题是,如何添加另一个查询来获取 NEXT sort_id so sort_id + 1 并获取该文件名,这样我就会得到以下信息:

幻灯片 - 时间 - 下一个文件名

仪表板 - 40 - did-you-know.php


但我还需要查看它是否是最后一个 sort_id,如果是,那么下一张幻灯片需要从 #1 开始。

这有意义吗?

如果有人能帮助我找到正确的方向,我将不胜感激。

谢谢!

最佳答案

您可以使用类似这样的方式检索 NEXT 排序 ID:

SELECT slides.name as slide, filename, time, sort_id  
FROM `slide_sort` 
INNER JOIN slides 
ON slide_sort.slide_id = slides.id 
WHERE slide_sort.user_id = 1 and slide_sort.sort_id = ($sort_id + 1)

您可以使用如下方式检索最后的排序 ID:

SELECT sort_id 
FROM `slide_sort` 
INNER JOIN slides 
ON slide_sort.slide_id = slides.id 
WHERE slide_sort.user_id = 1 order by sort_id desc limit 1

您可以使用以下内容检查这是否是最后一张幻灯片:

if ($sort_id == $last_sort_id)

如果是,您可以检索第一个排序 id 记录:

SELECT slides.name as slide, filename, time, sort_id  
FROM `slide_sort` 
INNER JOIN slides 
ON slide_sort.slide_id = slides.id 
WHERE slide_sort.user_id = 1 order by sort_id ASC limit 1

关于php - MySQL 将查询合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8582129/

相关文章:

php - 按字母顺序对 MYSQL 结果进行升序排序,但不将 'The' 排序为 T?

PHP:不呈现 HTML 标记

php - 在 PHP 中使用 phpseclib 时出现 RSA 问题

mysql - FOREIGN KEY 引用同一表的列。无法插入值

mysql - 如何根据另一个查询结果进行查询

php - 使用 Range 从两个表中获取数据

mysql - 自连接的依赖子查询

sql - 你能在 SQL 中定义 "literal"表吗?

php - 隐藏div的Javascript代码

php - 是否有命名 Controller 功能的约定?