我有一个查询,我想根据在另一个表中选择的项目的 ID 从另一个表中提取 ID。我目前正在根据从主查询中获得的结果使用附加查询来执行此操作。这会导致许多额外的查询。有没有办法将其压缩为 1 个查询?
SELECT music.id,
SUM(linked_tags.weight) AS total_weight
FROM (music)
INNER JOIN linked_tags ON linked_tags.track_id = music.id
AND linked_tags.tag_id IN (7,56,59)
GROUP BY music.id
ORDER BY total_weight DESC
然后附加查询来自通过 foreach 循环运行主查询的结果,其中 2713 是音乐表中项目的 ID。
SELECT tag_id,
weight
FROM (linked_tags)
JOIN tags_en ON tags_en.id = linked_tags.tag_id
WHERE track_id = '2713'
这会产生这个对象,其中 all_tags 是来自第二个查询的数据:
[id] => 1500
[name] => Some Track Name
[total_weight] => 10
[all_tags] => Array
(
[0] => 20
[1] => 28
[2] => 4
[3] => 13
[4] => 16
[5] => 7
[6] => 42
[7] => 56
[8] => 61
)
有没有办法将这一切都拉到 1 个查询中?