elfaus Posté 24 Août 2012 Posté 24 Août 2012 (modifié) Bizour bizour, voilà le topo, j'essaye de réaliser un graphique avec des valeurs que je peux obtenir depuis différentes tables. Le soucis, c'est qu'il faut que je réalise certains calculs en fonction de certaines contraintes x) J'ai par exemple 2 tables à exploiter Ces tables sont constituées de la façon suivante mom_cards_monsters(id,name,cost); mom_deck_monsters(deckid,monsterid,qty); A l'aide de la requête suivante j'obtient un premier résultat SELECT cost, qtyFROM mom_deck_monstersINNER JOIN mom_cards_monstersON mom_deck_monsters.monsterid = mom_cards_monsters.idWHERE deckid = 1 array (array(1,5),array(2,3),array(2,1),array(5,3)) Chouette, mais pour le moment non exploitable ' Il faudrait que les valeurs (qty) dont le cost est identiques soit additionnées entre elles. J'ai bien trouvé array_sum dans la documentation, mais il me faudrait quelque chose de la forme : array (cost => array(qty,qty,qty)) j'ai pensé à for ($i=1;$i<=7;$i++){$result[] = mysql_sum($array[$i]);} La bonne nouvelle c'est que cost est forcément compris entre 1 et 7 Mais pour le moment, je patauge Modifié 24 Août 2012 par elfaus
SStephane Posté 24 Août 2012 Posté 24 Août 2012 De ce que j'ai compris de ta demande, je ferai plus une requête de ce type plutôt que m'embêter à recalculer derrière : SELECT cost, SUM(qty)FROM mom_deck_monstersINNER JOIN mom_cards_monstersON mom_deck_monsters.monsterid = mom_cards_monsters.idWHERE deckid = 1 GROUP BY cost En fait tu peux le faire en requêtant c'est quasi certain, maintenant tes intitulés sont pas clairs et comme je m'y connais mal en monstres... je pige pas ce que tu veux faire (depuis kang et kodos, je suis largué)
elfaus Posté 25 Août 2012 Auteur Posté 25 Août 2012 je me répond à moi même, comme quoi l'acharnement a du bon $cost = array(0=>0,1=>0,2=>0,3=>0,4=>0,5=>0,6=>0);while ($data = $query->fetch(PDO::FETCH_OBJ)) { $cost[$data->cost-1] += $data->qty;} L'idée est simple, on crée un tableau en utilisant cost-1 pour index et qty pour valeur, ce qui permet de démarrer le tableau à 0. On en profite pour additionner la nouvelle à la valeur précédente dont l'index est identique. Mais il se trouve que ta requête semble tout aussi correct Oo Pourtant j'avais pas réussi avec les group by x) Merci merci merci
elfaus Posté 25 Août 2012 Auteur Posté 25 Août 2012 (modifié) temps qu'à faire, j'aimerais optimiser cette requête SELECT monsters.qty, sorts.qty, fortunes.qty FROM ( (SELECT SUM(qty) AS qty FROM mom_deck_monsters WHERE deckid = :id) AS monsters, (SELECT SUM(qty) AS qty FROM mom_deck_sorts WHERE deckid = :id) AS sorts, (SELECT SUM(qty) AS qty FROM mom_deck_fortunes WHERE deckid = :id) AS fortunes ) J'ai essayé SELECT SUM(mom_deck_monsters.qty), SUM(mom_deck_sorts.qty)FROM mom_deck_monsters, mom_deck_sortsWHERE mom_deck_monsters.deckid = 1AND mom_deck_sorts.deckid = 1 Mais ça marche pas :/ Le plus étrange, c'est que j'ai l'impression qu'il m'additionne les tables entre elles alors que je lui précise quelle champ additionner... Modifié 25 Août 2012 par elfaus
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant