所以,我在 PHP 中有这个查询,它按预期工作:
SELECT files.ID,
files.Name,
files.Downloads,
if (dlratings.userID IS NULL,0,r.vote) AS has_voted
FROM files
LEFT JOIN dlratings
ON (files.ID = dlratings.fileID AND dlratings.userID = $userID)
WHERE files.Temporary != 1 AND files.Type = $type AND files.Cat_1 = $cat_1
ORDER BY files.rating DESC, files.DateOrder DESC
现在出现了我的问题:我还想选择与这些选定文件相关联的标签。我正在使用toxi 方法,这意味着我有一个名为“tagmap”的表,其中包含行file_id
,tag_id
并且我有一个表“tags”,其中包含行tag_id
和tag_name
。
要在只有一个文件的页面上列出我需要的标签,我使用以下查询:
SELECT files.Name,
GROUP_CONCAT(tags.tag_name ORDER BY tags.tag_name SEPARATOR ', ') AS tags
FROM files
LEFT JOIN tagmap
ON tagmap.file_id = files.ID
LEFT JOIN tags
ON tagmap.tag_id = tags.tag_id
WHERE files.ID = $fileID
如何将两者结合起来,以便在第一个查询提供的列表中显示标签?
这是我尝试过的,但它只给了我 1 个结果:
SELECT files.ID,
files.Name,
files.Downloads,
GROUP_CONCAT(tags.tag_name ORDER BY tags.tag_name SEPARATOR ', ') AS tags
if (dlratings.userID IS NULL,0,r.vote) AS has_voted
FROM files
LEFT JOIN tagmap
ON tagmap.file_id = files.ID
LEFT JOIN tags
ON tagmap.tag_id = tags.tag_id
LEFT JOIN dlratings
ON (files.ID = dlratings.fileID AND dlratings.userID = $userID)
WHERE files.Temporary != 1 AND files.Type = $type AND files.Cat_1 = $cat_1
ORDER BY files.rating DESC, files.DateOrder DESC
请注意,我通过 php 调用这些查询并使用 mysqli。我尝试了一点,mysqli_multi_query
但我也完全迷失了那个......