Aller au contenu

Histoire de tableau


Sujets conseillés

Posté (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, qty
FROM mom_deck_monsters
INNER JOIN mom_cards_monsters
ON mom_deck_monsters.monsterid = mom_cards_monsters.id
WHERE deckid = 1



array (
array(1,5),
array(2,3),
array(2,1),
array(5,3)
)

Chouette, mais pour le moment non exploitable happy.gif'

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 sad.gif

Modifié par elfaus
Posté

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_monsters
INNER JOIN mom_cards_monsters
ON mom_deck_monsters.monsterid = mom_cards_monsters.id
WHERE 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é)

Posté

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 :)

Posté (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_sorts
WHERE mom_deck_monsters.deckid = 1
AND 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é par elfaus

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...