別のテーブルで選択されたアイテムの 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 は music テーブル内のアイテムの 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 は 2 番目のクエリから取得したデータです。
[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 つのクエリにまとめる方法はありますか?