[英]MySQL Combining queries into one
让我解释一下我要做什么。 首先,这是到目前为止我的结果预览:
我的查询:
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,以便sort_id + 1并获取该文件名,因此我将获得以下信息:
幻灯片-时间-next_filename
资讯主页-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)
您可以使用以下内容检索LAST排序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
您可以将查询结果限制为仅2行,包括当前幻灯片。 这样,您将获得幻灯片重定向到的位置,以及下一张幻灯片。 当然,由于需要处理多行,因此您仍然需要迭代或使用固定索引。 并且您需要检查您是否实际上得到了两行,以查看实际上是否还有下一张幻灯片可用。
就是说,我建议您使用当前查询来检索完整的幻灯片,并对其进行迭代以找到所需的内容。 因为...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.