Question

I have 3 queries I would like to combine into one for easier access

$query = "SELECT r.member_id, m.name, m.class, m.classid, m.level,m.guild_title, SUM(achie_points) total_pvp\n"
. "FROM roster_addons_achievements_achievements as r\n"
. "LEFT JOIN roster_addons_achievements_achie AS c \n"
. "ON r.achie_id = c.achie_id\n"
. "LEFT JOIN roster_members AS m\n"
. "ON r.member_id = m.member_id\n"
. "WHERE c.c_id = 95 OR c.p_id = 95\n"
. "GROUP BY r.member_id,m.name\n"
. "ORDER BY r.member_id ASC";

Gives me the SUM(achie_points) for c_id 95 and p_id 95

$query2 = "SELECT r.member_id, SUM(achie_points) total_arena\n"
. "FROM roster_addons_achievements_achievements as r\n"
. "LEFT JOIN roster_addons_achievements_achie AS c \n"
. "ON r.achie_id = c.achie_id\n"
. "LEFT JOIN roster_members AS m\n"
. "ON r.member_id = m.member_id\n"
. "WHERE c.c_id = 165\n"
. "GROUP BY r.member_id,m.name\n"
. "ORDER BY r.member_id ASC";

Gives me the SUM(achie_points) for c_id 165

$query3 = "SELECT r.member_id, SUM(achie_points) total_rbg\n"
. "FROM roster_addons_achievements_achievements as r\n"
. "LEFT JOIN roster_addons_achievements_achie AS c \n"
. "ON r.achie_id = c.achie_id\n"
. "LEFT JOIN roster_members AS m\n"
. "ON r.member_id = m.member_id\n"
. "WHERE c.c_id = 15092\n"
. "GROUP BY r.member_id,m.name\n"
. "ORDER BY r.member_id ASC";

Gives me the SUM(achie_points) for c_id 15092

The problem I'm having combining the 3 is the SUM(achie_points) of c_id 95, 165, and 15092 any help would be greatly appreciated.

Was it helpful?

Solution

$query = "SELECT r.member_id, m.name, m.class, m.classid, m.level,m.guild_title,
                 SUM(IF(c.c_id = 95 OR c.p_id = 95, achie_points, 0)) total_pvp,
                 SUM(IF(c.c_id = 165, achie_points, 0)) total_arena,
                 SUM(IF(c.c_id = 15092, achie_points, 0)) total_rbg
          FROM roster_addons_achievements_achievements as r
          LEFT JOIN roster_addons_achievements_achie AS c 
          ON r.achie_id = c.achie_id
          LEFT JOIN roster_members AS m
          ON r.member_id = m.member_id
          WHERE c.c_id IN (95, 165, 15092) OR c.p_id = 95
          GROUP BY r.member_id,m.name
          ORDER BY r.member_id ASC";

OTHER TIPS

you can also combine them via the union operator, but then the 3 queries must have the same output format.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top