MySQL二级查询性能过于强烈

I have a query where I want to pull in ID's from another table based on the ID of the item selected in another table. I'm currently doing this with an additional query based on the results that I get from the main query. It's resulting in many many additional queries. Is there a way to condense this into 1 query?

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

Then the additional query comes from running the results from the main query through a foreach loop, where 2713 is the ID of an item in the music table.

SELECT tag_id,
       weight
FROM (linked_tags)
JOIN tags_en ON tags_en.id = linked_tags.tag_id
WHERE track_id = '2713'

This results in this object, where all_tags is the data that comes from the 2nd query:

[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
    )

Is there a way to pull this all into 1 query?

You can combine them directly using join:

select tag_id, weight
from (SELECT music.id,
             SUM(linked_tags.weight) AS total_weight
      FROM music join
           linked_tags
           ON linked_tags.track_id = music.id AND linked_tags.tag_id IN (7,56,59)
      GROUP BY music.id
     ) m join
     linked_tags
     on m.id = linked_tags.track_id join
     tags_en
     ON tags_en.id = linked_tags.tag_id;

EDIT:

If I understand the query correctly, you are trying to get all tags on "tracks" (or "music") that have one or more tags in the set of (7,56,59). And, you want to get the sum of the weights of those three tags.

You can do this in one pass, if you don't mind have the tags in a comma-delimited list:

 SELECT m.id,
         SUM(case when lt.tag_id IN (7,56,59) then lt.weight end) AS total_weight,
         sum(lt.tag_id IN (7, 56, 59)) as NumSpecialTags,
         group_concat(lt.tag_id) as AllTags
 FROM music m join
      linked_tags lt
      ON lt.track_id = m.id
 GROUP BY m.id
 having NumSpecialTags > 0
 order by total_weight desc;

You then have to parse the AllTags list at the application layer.