Kom ihåg mig?
Home Menu

Menu


Avancerad SQL-fråga

 
Ämnesverktyg Visningsalternativ
Oläst 2013-04-17, 11:18 #31
lubic lubic är inte uppkopplad
Medlem
 
Reg.datum: Aug 2005
Inlägg: 205
lubic lubic är inte uppkopplad
Medlem
 
Reg.datum: Aug 2005
Inlägg: 205
Hänger inte riktigt med på vilket resultat du vill ha ut i din senaste fråga. Alltså vilka kolumner och data vill du få fram?

Hur ska du använda resultatet? Ska du visa en lista på medlemmar med total power, samt alla items de har? Om det inte är för många medlemmar som ska visas per sida så är det nog enklare/bättre att lösa detta i php-koden med flera querys. Antingen en med alla medlemmar och deras total power och sedan en per medlem för att hämta upp deras items till den medlemmen eller en för alla medlemmarna och en för alla items för dessa medlemmar och sedan php-logik för att sätta ihop resultaten.

Alternativt kan du titta på group_concat, om du bara behöver en textsträng med items dvs.

Då kan också så klart joina ihop member data med total power och items med en subquery för att få ut allt i samma fråga.
lubic är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-04-17, 23:03 #32
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Så här skulle du konna lägga in get_crew_power() som en SP:

Kod:
DELIMITER $$

CREATE PROCEDURE `get_crew_power`(in param_crew_id int)
BEGIN
	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 = param_crew_id
	GROUP BY cm.crew_id  ;

END$$
För att anropa SPn från PHP MED felhantering skriver du så här:

Kod:
if (!$db->query("CALL get_crew_power(" . crew_id . ")")) 
{
    echo "CALL failed: (" . $db->errno . ") " . $db->error;
}

För att anropa SPn från PHP UTAN felhantering skriver du så här:

Kod:
$db->query("CALL get_crew_power(" . crew_id . ")")

Senast redigerad av Conny Westh den 2013-04-17 klockan 23:12
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 15:58.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017