2013-04-16, 15:38
  #1
Medlem
Har ett nytt problem nu.

Koden för att få "total_power" ifrån enskilda spelare fungerar bra. Men nu har jag en tabell med en lista på spelare där jag måste räkna ihop allas "total_power" till en enda stor summa. Vi kan kalla den "MEGA_TOTAL_POWER".

Jag tror att man någonstans skall lägga en s.k. sub-query?

Här är mitt försök vilket ger mig ett felmeddelanden som jag inte kan förstå:

[PHP]SELECT *,
SUM
(SELECT 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) AS MEGA_TOTAL_POWER
FROM crews
WHERE id = 1 [/PHP]
Här är tabellen 'crews'. Denna lagras alla olika allianser/grupper/klaner.


[PHP]CREATE TABLE IF NOT EXISTS `crews` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`money` int(11) NOT NULL,
`tax` tinyint(3) unsigned NOT NULL,
`attack` int(10) unsigned NOT NULL,
`defence` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

INSERT INTO `crews` (`id`, `name`, `money`, `tax`, `attack`, `defence`) VALUES
(1, 'MuggemGansters', 0, 0, 0, 0); [/PHP]
Här är tabellen som lagras alla som är med i laget.


[PHP]CREATE TABLE IF NOT EXISTS `crew_members` (
`crew_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`status` tinyint(4) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `crew_members` (`crew_id`, `user_id`, `status`) VALUES
(1, 1, 9); [/PHP]
Hittade denna länk om det kan vara till min hjälp?
http://www.sqlteam.com/article/aggre...ed-sub-queries
Citera
2013-04-17, 08:31
  #2
Medlem
För att kunna svara på frågan måste jag förstå hur tabellerna hänger ihop.

members.member_id motsvaras det av crew_members.user_id eller?
Och crew_members.crew_id motsvaras av crews.id?

Du använder ju MyISAM-motorn och saknar constrainst..

En annan grej:
Om du har ett auto_increment på en kolumn ska du inte inserta något i den. Du ska alltså strunta i `id` och värdet (1) i din insert, då denna data skrivs in per automatik.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in