Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
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/03/2011, 23h01   #1
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Par défaut faire l'addition de différentes tables

désolé, je n'ai pas trop de chose à vous proposé mis à part mes tables en pièce
jointe. J'ai l'impression qu'il manque des champs ...

J'aimerai faire le count(*) de chacun des victoires, nul, défaites pour chaque équipe. Ça a l'air tout simple comme ça, mais j'aimerai rajouter cette requête en sous requête

Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT rencontres.num_rencontre,date_format(rencontres.date_rencontre,'%d/%m/%Y') AS date, rencontres.categorie_rencontre,rencontres. lieu_rencontre,rencontres.distance_rencontre,rencontres.fonction_rencontre,rencontres.nom_locaux_rencontre,rencontres.nom_visiteurs_rencontre, collaborateurs.nom_central_collaborateur, rencontres.niveau_rencontre,rencontres.tour_rencontre,conseil.link_conseil,rapports.link_rapport,controles.link_controle,buts.but_local,buts.but_visiteur,prolongations.num_rencontre AS prolongations,tab.tab_local,tab.tab_visiteur,result.local_result,result.visiteur_result
					FROM `rencontres` 
					LEFT JOIN collaborateurs ON rencontres.num_rencontre = collaborateurs.num_rencontre_collaborateur
					LEFT JOIN conseil ON rencontres.num_rencontre = conseil.num_rencontre
					LEFT JOIN controles ON rencontres.num_rencontre = controles.num_rencontre
					LEFT JOIN result ON  rencontres.num_rencontre = result.num_rencontre_result
					LEFT JOIN rapports ON rencontres.num_rencontre = rapports.num_rencontre
					LEFT JOIN buts ON rencontres.num_rencontre = buts.num_rencontre
					LEFT JOIN prolongations ON rencontres.num_rencontre = prolongations.num_rencontre
					LEFT JOIN tab ON rencontres.num_rencontre = tab.num_rencontre
					WHERE 1=1 //+ [plein de conditions]
j'ai bien essayer

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT COUNT(*) 
 
FROM(
SELECT rencontres.num_rencontre,date_format(rencontres.date_rencontre,'%d/%m/%Y') AS date, rencontres.categorie_rencontre,rencontres. lieu_rencontre,rencontres.distance_rencontre,rencontres.fonction_rencontre,rencontres.nom_locaux_rencontre,rencontres.nom_visiteurs_rencontre, collaborateurs.nom_central_collaborateur, rencontres.niveau_rencontre,rencontres.tour_rencontre,conseil.link_conseil,rapports.link_rapport,controles.link_controle,buts.but_local,buts.but_visiteur,prolongations.num_rencontre AS prolongations,tab.tab_local,tab.tab_visiteur,result.local_result,result.visiteur_result 
FROM `rencontres` 
 
LEFT JOIN collaborateurs ON rencontres.num_rencontre = collaborateurs.num_rencontre_collaborateur 
LEFT JOIN conseil ON rencontres.num_rencontre = conseil.num_rencontre 
LEFT JOIN controles ON rencontres.num_rencontre = controles.num_rencontre 
LEFT JOIN result ON rencontres.num_rencontre = result.num_rencontre_result 
LEFT JOIN rapports ON rencontres.num_rencontre = rapports.num_rencontre 
LEFT JOIN buts ON rencontres.num_rencontre = buts.num_rencontre 
LEFT JOIN prolongations ON rencontres.num_rencontre = prolongations.num_rencontre 
LEFT JOIN tab ON rencontres.num_rencontre = tab.num_rencontre 
 
WHERE 1=1 
AND (rencontres.num_locaux_rencontre LIKE "514935" OR rencontres.num_visiteurs_rencontre LIKE "514935" ) 
AND rencontres.date_rencontre < CURDATE() 
AND rencontres.disputer_rencontre LIKE "oui" 
ORDER BY rencontres.date_rencontre
 
) AS bidouille
 
WHERE (local_result = "victoire" OR visiteur_result = "victoire")
mais il me sort la somme des rencontres de la sous-requete et non pas les victoires ..

Merci pour votre aide ...
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 09h18   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 995
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 995
Points : 18 253
Points : 18 253
Envoyer un message via MSN à CinePhil
Je te donne le principe à utiliser : additionner des 1 en fonction d'un test :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT r.rencontres.nom_locaux_rencontre,
    SUM (
        CASE 
            WHEN b.but_local > b.but_visiteur THEN 1
            ELSE 0
        END
    ) AS nb_victoires,
    SUM (
        CASE 
            WHEN b.but_local < b.but_visiteur THEN 1
            ELSE 0
        END
    ) AS nb_defaites,
    SUM (
        CASE 
            WHEN b.but_local = b.but_visiteur THEN 1
            ELSE 0
        END
    ) AS nb_nuls
FROM rencontres r
LEFT JOIN buts b ON r.num_rencontre = b.num_rencontre
GROUP BY r.rencontres.nom_locaux_rencontre
Il n'y a ci-dessus que les équipes locales. Pour avoir les matches retour, il faut la même requête inversée ou peut-être faire une auto-jointure de la table rencontre (pas le temps d'y réfléchir davantage).
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 17h05   #3
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Merci j'ai réussi à faire ce que je voulais grâce à toi. Bon je l'ai fait en php, car je suis plus à l'aise avec cette façon de programmer, mais bon tu m'as largement inspiré. Je dois encore intégrer les tirs au buts, mais bon le plus dur est fait.
En plus, ça m'a permis de virer une table inutile.

a plus
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple 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 18h54.


 
 
 
 
Partenaires

Hébergement Web