0

別のテーブルで選択されたアイテムの 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 つのクエリにまとめる方法はありますか?

4

1 に答える 1