salut a tous, ma question concerne une requete sql non plus du PHP:
j`ai 2 table (EXAMEN et TEST):
EXAMEN: 1 seul champ Int_Exa qui est le clé primaire
TEST: 3 champs(Id_Test comme clé primaire,Rep_Correctes,et Int_Exa qui est un clé étrangère)
je cherche une requete qui me retourne pour chaque examen combien ya de tests??
j`avais essayé ca:
SELECT T1.Int_Exa,count(*) as 'TOTAL' from TEST T1,TEST T2 where T1.Int_Exa=T2.Int_Exa;
ca pas marché
alors je fesais:
SELECT EXAMEN.Int_Exa,count(Id_Test) from EXAMEN,TEST where EXAMEN.Int_Exa=TEST.Int_Exa;
SELECT COUNT(test.*) AS tests, examen.id AS exam
FROM examen
INNER JOIN test
ON examen.id = test.Int_Exa -- Ils sont bizarres tes noms de champs
GROUP BY exam
ORDER BY exam ASC
je travaille sous vb.net et donc j`ai peur de vous faire confusion ou mal comprehension si je vous montre l`erreur que j`obtenais, alors s`il y a erreur l`essentiel que la requete n`est pas valable
S'il y a une erreur quelque part, il faut comparer le code supposé responsable et le message d'erreur généré. C'est une règle d'or dans tous les domaines de la prog.
Non, la requête est simplement incorrecte et Lucaazori semble utiliser un SGBDR plus intelligent que MySQL.
Sinon, j'ai aucune idée pourquoi tu postes dans le forum PHP alors que le problème concerne les bases de données et que tu n'utilises même pas PHP.
Pour le problème, je vois pas pourquoi il faudrait une jointure, tu as déjà toutes les informations dans la table TEST. Une simple requête comme celle-ci devrait fonctionner :
SELECT Int_Exa, COUNT(*) AS nbrTest
FROM TEST
GROUP BY Int_Exa;
.
P.S. On dit des colonnes, pas des champs.
P.P.S. Tu utilises une syntaxe de jointure dépréciée depuis un bon moment. Utilise plutôt INNER JOIN lorsque tu veux faire une jointure interne.
la table examen peut contenir des examens(Int_Exa) qui n`existent pas dans la table TEST (l`utilisateur a ajouté un examen mais n`a pas encore le configuré) dans ce cas ca dois s`afficher avec un nombre de test egal a zero
merci pour vos interventions, j`avais essayé ca en fait:
SELECT EXAMEN.Int_Exa, ISNULL(T.nbrTest, 0) AS nbrTest FROM EXAMEN LEFT JOIN (SELECT int_Exa, COUNT(*) as nbrTest FROM TEST GROUP BY int_Exa) AS T ON EXAMEN.Int_Exa = T.Int_Exa ORDER BY EXAMEN.Int_Exa;
ca retourne l`erreur suivante:
wrong number of arguments used with function in query expression 'ISNULL(T.nbrTest,0'.
c`etais pas comme ca qu`on utilisait la fonction ISNULL ?? j`aimerais bien m`aider a resoudre le truc car la tache correspondante dans l`application que je suis entrain de concevoire s`arrete sur l`optimalité de cette requete
salut, j`ai essayé cette requete et elle marche trés bien:
thank you, i tried this :
[CODE]SELECT EXAMEN.Int_Exa, IIF(ISNULL(T.nbrTest), 0, T.nbrTest) AS nbrTest FROM EXAMEN LEFT JOIN (SELECT int_Exa, COUNT(*) as nbrTest FROM TEST GROUP BY int_Exa) AS T ON EXAMEN.Int_Exa = T.Int_Exa ORDER BY EXAMEN.Int_Exa[/CODE]
it worked fine, thank you again for help
c`était pas facile de m`adapter avec ce genre de requete dont je suis pas a l`aise puisque je travaillais avec le SFW habitule et les requetes corrélées
merci encore de vos interventions
probleme avec requete select
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
{LVM}Plan de "partitions" pour machines virtuelles ? Carte de capture sous linux ? Erreur ACPI au boot ?
{LVM}Plan de "partitions" pour machines virtuelles ? Carte de capture sous linux ? Erreur ACPI au boot ?
{LVM}Plan de "partitions" pour machines virtuelles ? Carte de capture sous linux ? Erreur ACPI au boot ?
{LVM}Plan de "partitions" pour machines virtuelles ? Carte de capture sous linux ? Erreur ACPI au boot ?