Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2007, 22h58   #1
Candidat au titre de Membre du Club
 
Enseignant
Inscription : décembre 2007
Messages : 28
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : décembre 2007
Messages : 28
Points : 13
Points : 13
Par défaut Requète imbriqué dans le SELECT

Bonjour,

Explication du probleme tout d'abord pour que je sois pas trop flou dans ma question.
Je voudrais avoir le pourcentage de cote d'un joueur dans un systeme de mise.
Pour faire cela dans la requete je recupere le montant des mises sur un joueur et un match. Ce résultat je le divise par le montant des mises total du meme match.
A ce stage la ( normalement ) je dois avoir le pourcentage c'est a dire un nombre entre 0 et 1.
Je multiplie donc ceci par 100.

Pour faire cela, il faut que je passe par une requete imbriqué mais cette imbrication je ne vois pas comment je peux la faire a part la mettre dans le SELECT

Voila ma requete ( aucune erreur ne s'affiche, toutefois elle me retourne 0 a chaques fois ) :

Code :
1
2
3
SELECT montant_mise / 
     ( SELECT SUM(montant_mise) FROM MISER WHERE id_match = '3')
* 100 AS cote FROM MISER WHERE id_joueur = '1' AND id_match = '3'

En esperant avoir une réponse, je vous remercie de m'avoir lu.

Ps: Je suis nouveau dans ce forum j'espere pouvoir servir a quelque chose dans la communauté
Virtuosity est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 17h55   #2
jnore
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Bonsoir

Il te faut une liaison entre ta table et ta sous-requete:


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
SELECT montant_mise*100 / 
    (
    SELECT SUM(montant_mise) 
    FROM MISER 
    WHERE id_match = '3' AND id_joueur= table_alias.id_joueur
    GROUP BY id_joueur
    ) AS cote
 
 
FROM MISER AS table_alias
WHERE id_joueur = '1' AND id_match = '3'

Si ca ne marche pas, donnes-nous le nom de tes champs.
  Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2007, 19h18   #3
Candidat au titre de Membre du Club
 
Enseignant
Inscription : décembre 2007
Messages : 28
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : décembre 2007
Messages : 28
Points : 13
Points : 13
Je te remercie énormement c'est parfait, je savais pas qu'il fallait procédé ainsi.

Juste une petite modification pour que la requete renvoye pas 100 tout le temps car tu fais une division entre 2 fois la meme chose ( je crois mais je suis pas sur ) :

Code :
1
2
3
4
5
6
7
8
9
10
SELECT SUM(montant_mise)*100 / 
    (
    SELECT SUM(montant_mise) 
    FROM MISER 
    WHERE id_match = '3'
    ) AS cote
 
 
FROM MISER AS table_alias
WHERE id_joueur = '1' AND id_match = '3'
Voila encore merci à toi.
Virtuosity est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 17h06   #4
MrX
Nouveau Membre du Club
 
Inscription : octobre 2004
Messages : 46
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 46
Points : 31
Points : 31
Voici une autre solution

Code :
1
2
3
4
5
6
7
8
9
10
11
 
SELECT table_alias.montant_mise*100 / cote.total AS cote
FROM 
MISER AS table_alias,
(
    SELECT SUM(montant_mise) AS total
    FROM MISER AS 
    WHERE id_match = '3' AND id_joueur= table_alias.id_joueur
    GROUP BY id_joueur
) AS cote
WHERE id_joueur = '1' AND id_match = '3'
A++
MrX est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h17.


 
 
 
 
Partenaires

Hébergement Web