Requete Sqlllllll

ABDELFETTAH -  
 ABDELFETTAH -
Bonjour,
aider moi svp;

je ss débutant en PHP MySql;
j'ai une table ds la base de données: filieres(etab, ville, avisexperts);
important: le champ "avisexperts" peut avoir 3 valeurs: F, FAR, FSC, DEF;
je cherche une requete select me permet d'afficher le resultat dans une table de 6 colonnes comme suit:

(etab, ville, nombre de F, nombre de FAR, nombre de FSC, nombre DEF);

Merci bien.

5 réponses

chuka Messages postés 980 Statut Membre 378
 
Salut,
tu peux essayer cela:
SELECT etab AS e,ville AS v,(SELECT COUNT(avisexperts) FROM filieres WHERE avisexperts='FAR' AND etab=f.ETAB AND ville=f.VILLE)AS FAR,(SELECT COUNT(avisexperts) FROM filieres WHERE avisexperts='FSC'AND etab=f.ETAB AND ville=f.VILLE) AS FSC,
(SELECT COUNT(avisexperts) FROM filieres WHERE avisexperts='DEF' AND etab=f.ETAB AND ville=f.VILLE) AS DEF
FROM filieres f
GROUP BY etab,ville
J'espere ca pourra t'aider!!
@+
0
Mabrouuuuuk
 
Merci bcq
La solution est plus proche de nous juste que les requêtes :
(

SELECT COUNT( avisexperts )
FROM filieres
WHERE avisexperts = 'Favorable'
) AS F, (

SELECT COUNT( avisexperts )
FROM filieres
WHERE avisexperts = 'Favorable avec recommandations'
) AS FAR, (

SELECT COUNT( avisexperts )
FROM filieres
WHERE avisexperts = 'Favorable sous conditions'
) AS FSC, (

SELECT COUNT( avisexperts )
FROM filieres
WHERE avisexperts = 'Défavorable'
) AS DEF
calculent le NOMBRE TOTAL pour chaque avis dans toute la table filieres, mais moi je veux que pour chaque ligne (etab, ville) je calcule le nombre de F, FAR, FSC et DEF
Exemple :
Etab (EST), ville (Casa), 2 (F), 3 (FAR), 7 (FSC), 1 (DEF)
Etab (ENSIAS), ville (Rabat), 6 (F), 3 (FAR), 2 (FSC), 1 (DEF)
0
chuka Messages postés 980 Statut Membre 378
 
Salut,
As tu fais un test de la requete???
Celle-ci te retourne bien le resultat que tu souhaites......
sinon tu as une autre alternatives:
select etab,ville ,count(F),count(Far),count(FSC),count(DEF) from (
select etab,ville,avisexperts as F,null as Far,null as FSC,null As DEF from filieres WHERE avisexperts='Favorable'
union all
select etab,ville,null,avisexperts,null,null from filieres WHERE avisexperts='Favorable avec recommandations'
union all
select etab,ville,null,null,avisexperts,null from filieres WHERE avisexperts='Favorable sous conditions'
union all
select etab,ville,null,null,null,avisexperts from filieres WHERE avisexperts='Défavorable'
)
group by etab,ville
Cette requete te donnera le meme resultat que celle donnée au premier post...
@+
0
ABDELFETTAH
 
salut,

J'ai testé les deux requete, la première m'a donné le resultat sauf que pour les colonnes "F", "FAR", "FSC" et "DEF" ayant les memes valeures (0, 12, 11, 1) pour toutes les lignes du tableau affiché, ce qui fait les 4 requête ont calculé le NOMBRE TOTAL de "F", "FAR", "FSC" et "DEF" dans la table bases de données "filieres" et les font repeter pour toutes les lignes du tableu d'affichage.
pour la deuxieme requête, il ya une erreur MySql: #1248 - Every derived table must have its own alias;

j'ai essayé de faire plusieurs modifications et testes mais sans resultat.
merci pour vous aides
0
chuka Messages postés 980 Statut Membre 378
 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ABDELFETTAH
 
Merci bcq pour vous aides

j'ai utilisé la deuxième requête, mais avant de faire la selection finale, j'ai créé une table logique TEST avec l'union des requetes:
select etab,ville,avisexperts as F,null as FAR,null as FSC,null As DEF from filieres WHERE avisexperts='Favorable'
union all
select etab,ville,null as F, avisexperts as FAR, null as FSC, null as DEF from filieres WHERE avisexperts='Favorable avec recommandations'
union all
select etab,ville,null as F, null as FAR, avisexperts as FSC, null as DEF from filieres WHERE avisexperts='Favorable sous conditions'
union all
select etab,ville,null as F, null as FAR, null as FSC, avisexperts as DEF from filieres WHERE avisexperts='Défavorable'

et en fin j'ai fais la selection finale avec la requete:
select etab, ville, count(F) as Favorable, count(FAR) as Favorable avec recommandations, count(FSC) as Fvorable sous conditions, count(DEF) as Défavorable from TEST ) group by etab, ville;
ça marche trés bien
merci
0