mysql - sqlite query to get 1 table row but grouping based on other table -
mysql - sqlite query to get 1 table row but grouping based on other table -
i developing application need query sqlite database.
"team" table
teamid, teamname 1, eagle 2, tiger 3, snake 4, lion"member" table
memberid, teamid, membername, membergender 1, 1, yuli, f 2, 2, george, m 3, 3, rudy, f 4, 4, mike, m 5, 1, susi, f 6, 2, michael, m 7, 1, lisa, f 8, 3, john, m 9, 4, linda, f 10, 4, torry, m 11, 2, jessica, f 12, 2, abba, frequirement : 1. show "member" table 2. list need grouped teamid 3. if in team there "male" set team on top (first) * team not have "male" set on bottom (last) 4. grouping sorted teamid * fellow member of same teamid must listed in sequence ordered
the expected homecoming list should be:
memberid, teamid, membername, membergender 2, 2, george, m 6, 2, michael, m 11, 2, jessica, f 12, 2, abba, f 8, 3, john, m 3, 3, rudy, f 4, 4, mike, m 10, 4, torry, m 9, 4, linda, f 1, 1, yuli, f 5, 1, susi, f 7, 1, lisa, f** note: grouping teamid
currently can sort "member" table membergender can not create them in grouping @ same time.
please help me create sqlite query (or in mysql if sqlite not possible)
note -- in mysql. might work in sqlite has group_concat
, , may need alter left join
left outer join
i'm not sure (i utilize mysql not sqlite) -- give go.
select member.*, hasmale fellow member left bring together (select teamid, group_concat(membergender) '%m%' hasmale fellow member grouping teamid) t2 on t2.teamid=member.teamid order hasmale desc,teamid,memberid;
explanation first see whether team has male:
select group_concat(membergender) '%m%' hasmale fellow member grouping teamid;
the group_concat(membergender)..group teamid
converts genders each team f,m,f,f
, etc. like '%m%
tests whether there m
in gender string, returns 1 if team has male , 0 otherewise.
secondly, bring together member
table hasmale
table, , order first whether team has male, (within that) team, , (within that) fellow member id. since did left join
, hasmale
value repeated each fellow member in each team.
mysql sqlite group-by sql-order-by priority
Comments
Post a Comment