Jump to content
Sign in to follow this  
elfaus

Histoire de tableau

Rate this topic

Recommended Posts

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

Edited by elfaus

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Edited by elfaus

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...