20 lines
866 B
SQL
20 lines
866 B
SQL
SELECT
|
|
CAST(squad.id AS TEXT) AS squadId,
|
|
COALESCE(squad.name, '') AS name,
|
|
MAX(CASE WHEN member.rank = 4 THEN CAST(member.user_profile_id AS TEXT) END) AS leaderProfileId,
|
|
MAX(CASE WHEN member.rank = 4 THEN CAST(member_profile.prisoner_id AS TEXT) END) AS leaderPlayerId,
|
|
COUNT(member.id) AS memberCount,
|
|
squad.score AS score,
|
|
squad.member_limit AS memberLimit,
|
|
squad.message AS message,
|
|
squad.information AS info,
|
|
squad.last_member_login_time AS lastMemberLoginTime
|
|
FROM squad
|
|
LEFT JOIN squad_member member ON member.squad_id = squad.id
|
|
LEFT JOIN user_profile member_profile ON member_profile.id = member.user_profile_id
|
|
WHERE (:squadId IS NULL OR CAST(squad.id AS TEXT) = :squadId)
|
|
AND (:search IS NULL OR COALESCE(squad.name, '') LIKE '%' || :search || '%')
|
|
GROUP BY squad.id
|
|
ORDER BY squad.score DESC, squad.id
|
|
LIMIT COALESCE(:limit, 500)
|