20 lines
816 B
SQL
20 lines
816 B
SQL
SELECT
|
|
CAST(s.id AS TEXT) AS squadId,
|
|
COALESCE(s.name, '') AS name,
|
|
CAST(leader.user_profile_id AS TEXT) AS leaderProfileId,
|
|
CAST(leader_profile.prisoner_id AS TEXT) AS leaderPlayerId,
|
|
COUNT(member.id) AS memberCount,
|
|
s.score AS score,
|
|
s.member_limit AS memberLimit,
|
|
s.last_member_login_time AS lastMemberLoginTime,
|
|
s.last_member_logout_time AS lastMemberLogoutTime
|
|
FROM squad s
|
|
LEFT JOIN squad_member member ON member.squad_id = s.id
|
|
LEFT JOIN squad_member leader ON leader.squad_id = s.id AND leader.rank = 4
|
|
LEFT JOIN user_profile leader_profile ON leader_profile.id = leader.user_profile_id
|
|
WHERE (:squadId IS NULL OR CAST(s.id AS TEXT) = :squadId)
|
|
AND (:search IS NULL OR COALESCE(s.name, '') LIKE '%' || :search || '%')
|
|
GROUP BY s.id
|
|
ORDER BY s.score DESC, s.id
|
|
LIMIT COALESCE(:limit, 500)
|