解決方法がわからない問題に直面しています。この(解決済み)問題に関連しています。
他の投稿で述べたようにMedia
、同じユーザーの多くのレコードを保持できるテーブルがありますが、最大6つのレコードのみを表示したい(いずれにせよ、1つのType
画像のみ、その後に最大5 つのType
2 つの画像)。
私が今持っているクエリは、画像が1つしかない限り正常に機能しますがType
、別の画像を1つ追加するType
と、クエリは両方を表示します。残念ながら、のようなものORDER BY UserMedia.m_Type = 1 DESC LIMIT 1
はGROUP_CONCAT
機能しませんが、まさに私が必要としているものです。これを実現する賢いアイデアはありますか?
ここに、関連するコードを含むSQL Fiddleがあります。私のクエリは次のようになります
SELECT
User.u_UserName, User.u_UserMail, User.u_UserRegistration,
Status.us_PaymentStatus,
Sex.us_Gender, Sex.us_Interest,
Personal.up_Name, Personal.up_Dob, Personal.up_City, Personal.up_Province,
UserMedia.m_Id, UserMedia.m_Type, SUBSTRING_INDEX(
GROUP_CONCAT(
CONCAT(
UserMedia.m_Type, ':', UserMedia.m_File
)
ORDER BY UserMedia.m_Type = 1, UserMedia.m_Date DESC SEPARATOR '|'
),'|',6
) AS userFiles
FROM User AS User
JOIN User_Status AS Status ON Status.User_u_UserId = User.u_UserId
JOIN User_Sex_Info AS Sex ON Sex.User_u_UserId = User.u_UserId
LEFT JOIN User_Personal_Info AS Personal ON Personal.User_u_UserId = User.u_UserId
LEFT JOIN Media AS UserMedia ON UserMedia.User_u_UserId = User.u_UserId
WHERE User.u_UserId = '18'
GROUP BY User.u_UserId