Visa ett inlägg
Oläst 2013-04-17, 10:32 #30
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
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 `itemsON 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
secag är inte uppkopplad   Svara med citatSvara med citat