Löste det på egen hand..
PHP-kod:
SELECT SUM(t.totPower) AS total_crew_power
FROM crew_members cm
JOIN members m ON m.member_id = cm.user_id
JOIN
(SELECT m.member_id,
(SUM(i.item_stat) + MAX(m.member_attack) + MAX(m.member_defence)) AS totPower
FROM members m
JOIN memberitems mi ON m.member_id = mi.memberitems_member
JOIN items i ON i.item_id = mi.memberitems_item
GROUP BY m.member_id)t ON t.member_id = m.member_id
WHERE cm.crew_id = {$id}
GROUP BY cm.crew_id
Nytt problem!
Med denna query:
PHP-kod:
SELECT members.*,
CASE WHEN items.item_stat IS NULL
THEN
members.member_attack + members.member_defence
ELSE
SUM(items.item_stat) + members.member_attack + members.member_defence
END AS total_power
FROM members
LEFT JOIN memberitems ON members.member_id = memberitems.memberitems_member
LEFT JOIN items ON memberitems.memberitems_item = items.item_id
GROUP BY members.member_id
ORDER BY total_power DESC, members.member_id LIMIT 20
så vill jag också hämta memberitems för varje member som jag gör med denna query:
PHP-kod:
SELECT *
FROM `memberitems`
JOIN `items` ON items.item_id = memberitems.memberitems_item
WHERE memberitems.memberitems_member = {MEMBER_ID}
Problemet nu är att första queryn ger en row per member men varje member kan ha flera items. Om detta ska gå måste jag då göra en ny tabell i queryn där jag lägger alla memberitems i en column och sedan gör en SELECT på den columnen och sedan tömmer den tabellen mellan varje member och tar bort den när queryn är klar.
Hoppas att någon hänger med i min tankegång eller har en bättre lösning