php - 根据 id 从同一个 MySql 表中选择
问题描述
我正在构建一个基本的相册页面,它的顶部是 selectec 照片,下面是相册缩略图的其余部分。URL的结构如下:
/photos/photo.php?id=164
表结构包含事件、文件名和 ID 字段
事件字段可以归因于来自同一事件的多个图像。事件字段也可以连接到事件表,它将同一事件下的不同种族聚集在一起。
对于下面的缩略图,对于与 URL 中的 GET 关联的事件,我想选择除了 URL 中 id 所在的照片之外的所有照片。
我相信需要一个内部连接,但我正在努力让它发挥作用。这是我的查询,它可以选择不是正在显示的照片(来自 URL) - 但它不能限制为仅显示与正在显示的图像相同事件的其他照片。
SELECT distinct pg.`filename`, pg.`event`, pg.`id`
from photogallery pg
INNER JOIN photogallery pg2 on pg.`event` = pg2.`event`
WHERE pg.`id` <> 302 and pg.`event` = pg2.`event`
示例数据集:
Filename ¦¦ Event ¦¦ ID
1983-1.jpg ¦¦ 1983 ¦¦ 1
1983-2.jpg ¦¦ 1983 ¦¦ 2
1983-3.jpg ¦¦ 1983 ¦¦ 3
2001-1.jpg ¦¦ 2001 ¦¦ 4
2001-2.jpg ¦¦ 2001 ¦¦ 5
2001-3.jpg ¦¦ 2001 ¦¦ 6
如果 GET 设置为 1,我希望查询仅显示 ID 2 和 3。但它显示的 ID 为 2、3、4、5、6。
解决方案
您可以通过 equal 上的内部自我加入来做到这一点event
。但是您需要过滤id
其中一种情况下的搜索结果以及两种情况下的不相等性id
。
SELECT pg1.filename,
pg1.event,
pg1.id
FROM photogallery pg1
INNER JOIN photogallery pg2
ON pg1.event = pg2.event
WHERE pg2.id = 1
AND pg1.id <> pg2.id;
推荐阅读
- javascript - 在名字字段中自动建议电子邮件地址
- javascript - 如何从本地驱动器打开文件 - Angular 4
- cordova - 用于 Apache cordova 应用程序开发的代码分析工具?
- python - 使用 Python 在同一行 CSV 中的所有数据变量
- javascript - 可以检测碰撞但物体通过移相器 p2 物理
- sql - 电子邮件的数据驱动订阅
- javascript - 嵌套对象迭代并返回空值键名nodejs
- python - 奇怪的python文件路径行为
- jquery - Featherlight YouTube 视频链接 - 缩略图上方的播放按钮未链接/打开
- php - JQuery Append 表单未在 PHP 中发布