mysql - 经典 ASP - 我可以丢失嵌套循环来换取连接吗?

标签 mysql sql asp-classic

我正在尝试优化其中一个脚本。它适用于库存照片网站,使用 WHILE WEND 循环显示大型图像网格,循环遍历我的 DB (MySQL) 照片表。

在这个循环中,我有另一个 WHILE END 循环,它从我的人物表中获取每张照片中的人物姓名。

我的问题是,我可以通过向主查询添加 JOIN 来丢失第二个 WHILE WEND 循环吗?

我的困惑来自于返回不止一个人。我不知道如何用逗号分隔一个或多个名称,我只是不知道。也许我的脚本本身就很好,但我确信如果没有嵌套循环,它会更快,因为在某些时候,我正在考虑添加另一个查询,该查询返回每张照片的前 5 个关键字,并且不这样做不想添加另一个循环!

屏幕截图

enter image description here

我的伪代码

Set rsPhotos = Conn.Execute(" " _
& "SELECT photoID, setID, caption, dateCreated, dateUploaded " _
& "FROM photos ORDER BY dateCreated DESC;)"

While NOT rsPhotos.EOF
    Response.Write "<div>"
        Response.Write "<img src=""photo.jpg"">"
        Response.Write "<p>"
            people_str = ""
            Set rsPeople = Conn.Execute("SELECT p.person FROM photoPeople AS pp " _
            & "LEFT JOIN people AS p USING (personID) " _
            & "WHERE pp.photoID = "&rsPhotos.Fields("photoID")&" " _
            & "ORDER BY p.person ASC;")
            While NOT rsPeople.EOF
                people_str = people_str & ", " & rsPeople.Fields("person")
            rsPeople.MoveNext
            Wend
            rsPeople.Close
            Response.Write Mid(people_str,3)
        Response.Write "</p>"
    Response.Write "<div>"
rsPhotos.MoveNext
Wend

rsPhotos.Close

数据库架构

PHOTOS tbl
photoID        |   INT 9
setID          |   INT 9
caption        |   VARCHAR2000
dateCreated    |   DATETIME
dateUploaded   |   DATETIME

PHOTOPEOPLE tbl
photoID        |   INT 9
personID       |   INT 7

PEOPLE tbl
personID       |   INT 7
person         |   VARCHAR 100

最佳答案

这应该可以做到 -

SELECT photos.photoID, photos.setID, photos.caption, photos.dateCreated, photos.dateUploaded, GROUP_CONCAT(p.person ORDER BY p.person ASC SEPARATOR ', ')
FROM photos
LEFT JOIN photoPeople AS pp
    ON photos.photoID = pp.photoID
LEFT JOIN people AS p
    ON pp.personID = p.personID
GROUP BY photos.photoID
ORDER BY dateCreated DESC

GROUP_CONCAT()

关于mysql - 经典 ASP - 我可以丢失嵌套循环来换取连接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10067062/

相关文章:

MySQL - 表中的描述与同一个表中的 id 不同

java - 试图了解如何将变量插入 jdbc sql 查询中?

javascript - 使用经典的 asp 或 javascript(且兼容 IE)上传 imgur?

asp-classic - 找出真正的文件类型

sql - PostgreSQL 从具有指定条件的表中选择行

asp-classic - ASP 经典 : How to schedule a function server-side

php - 再次将mysql中存储的字符串转换为php : eval()

php - 序列化数组中的mysql选择查询

java - Ping 一个 MySQL 服务器

mysql - 自定义 MYSQL 自定义排序顺序