私は現在、静的な順序を使用して特定のテーブル(画像)からデータを出力するMySQLクエリを作成しようとしています。私は現在UNIONALLを使用してこれを行っていますが、今はちょっと行き詰まっています。
これが私がしたいことです:
次のフィールドを持つimagesという名前のテーブルがあります:user_id、image、image_dimension(このフィールドの値:small、wide、tall、large)。
画像テーブルから、静的な順序で特定の寸法の画像を取得して、静的な画像グリッドに合わせたいと思います。今では複雑になっています。user_idごとに1つの画像だけが必要です。
これはこれまでの私の試みです:
SELECT
*
FROM
(
(SELECT * FROM `artworks` WHERE img = 'Large' LIMIT 1)
UNION ALL
(SELECT * FROM `artworks` WHERE img = 'Small' LIMIT 2)
UNION ALL
(SELECT * FROM `artworks` WHERE img = 'Large' LIMIT 1)
UNION ALL
(SELECT * FROM `artworks` WHERE img = 'Wide' LIMIT 1)
UNION ALL
(SELECT * FROM `artworks` WHERE img = 'Small' LIMIT 2)
UNION ALL
(SELECT * FROM `artworks` WHERE img = 'Tall' LIMIT 2)
UNION ALL
(SELECT * FROM `artworks` WHERE img = 'Large' LIMIT 1)
) AS order
このクエリは、テーブル「images」から特定のディメンションの画像をプルし、LIMITを使用して-注文に必要な量を取得します。これは今のところ機能しますが、順序を維持しながらuser_idごとに1つの画像しか取得できません。
注文を確実に取得するには(クエリを参照)、user_idごとに1つの画像しか取得できないようにするにはどうすればよいですか?
再度注文する場合:1x大、2x小、1x大、1x幅、2x小、2x高さ、1x大)
私の悪い英語で申し訳ありませんが、さらに説明が必要な場合はお知らせください。
編集:
Table format artworks:
id | user_id | img_name | img
Sample data from artworks:
1 | 1 | Test 1 | Large
2 | 1 | Test 2 | Large
3 | 2 | Test 3 | Small
4 | 2 | Test 4 | Small
5 | 2 | Test 5 | Small
6 | 3 | Test 6 | Small
7 | 3 | Test 7 | Small
8 | 3 | Test 8 | Small
9 | 4 | Test 9 | Large
10 | 4 | Test 10 | Large
11 | 5 | Test 11 | Small
12 | 5 | Test 12 | Wide
13 | 6 | Test 13 | Small
14 | 7 | Test 14 | Small
My expected result (ORDER BY id DESC) to get latest img of each user:
2 | 1 | Test 2 | Large
5 | 2 | Test 5 | Small
8 | 3 | Test 8 | Small
10 | 4 | Test 10 | Large
12 | 5 | Test 12 | Wide
13 | 6 | Test 13 | Small
14 | 7 | Test 14 | Small