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 24/05/2011, 18h06   #1
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 143
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 143
Points : 19
Points : 19
Par défaut problème avec une requete SELECT

Bonjour,

J'effectue la requete suivante :

Code :
1
2
3
4
5
6
7
 
SELECT  amv.id_actif, count(DISTINCT d.id_decl)  
FROM t_declaration d  , t_qualification  qual , t_actif_menace_vulnerabilite  amv  
WHERE d.id_decl = qual.declaration  
AND qual.id_actif_menace_vulnerabilite = amv.id 
AND ( amv.id_actif = ?) 
GROUP BY amv.id_actif
que je peuple avec les bonnes valeurs en java.

Le problème c'est que j'ai plusieurs qualifications dans t_qualification qui contiennent le meme id_actif_menace_vulnerabilite et du coup au lieu de me les récupérer toutes, il m'en récupère qu'une.

Comment faire pour que toutes les qualifications correspondant à ces critères soient récupérées meme si elles ont des id_menace_vulnerabilite identiques?

Merci d'avance
cecile38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 19h09   #2
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
Utilsation erronée du GROUP BY.
Et puis, il faudrait passer aux jointures.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 08h26   #3
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 846
Points : 1 322
Points : 1 322
Salut,

oui les jointures ça existe depuis 10 ans et c'est plus optimisé que cette écriture

ton groupe by ne sert à rien si tu fixes une seule valeur sur ce sur quoi tu l'appliques...

et ça serait bien de nous donner la structure des tables et un petit échantillon de données...
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h15   #4
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 143
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 143
Points : 19
Points : 19
Voici les structures des tables t_qualification et t_actif_menace_vulnerabilite.
La table t_actif_menace_vulnerabilite contient beaucoup plus d'enregistrement que ça donc les id que vous voyez dans t_qualification ne sont peut etre pas dans la capture que j'ai faite.

Merci d'avance pour votre aide
Images attachées
Type de fichier : png t_qualification.png (19,4 Ko, 4 affichages)
Type de fichier : png t_actif_menace_vulnerabilite.png (29,1 Ko, 5 affichages)
cecile38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h20   #5
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 846
Points : 1 322
Points : 1 322
et la 3ème table?
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h28   #6
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 143
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 143
Points : 19
Points : 19
Voici la 3ème table (t_declaration)
Images attachées
Type de fichier : png t_declaration.png (8,1 Ko, 2 affichages)
cecile38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h40   #7
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 846
Points : 1 322
Points : 1 322
ok maintenant reformule clairement ce que tu cherche en fonction de quoi
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/05/2011, 09h56   #8
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
Pour info, ce qu'il a écrit est une jointure aussi, mais implicite...
Les jointures existent depuis plus de 10 ans et heureusement.
Il est effectivement plus lisible (mais pas forcement plus optimisé) d'utiliser les jointures explicites, séparant ainsi les elements de jointures des criteres de selection.
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 10h06   #9
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 143
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 143
Points : 19
Points : 19
en fait pour chaque qualification correspondant à la requete, je veux recupérer id_actif correspondant à l'actif_menace_vulnerabilite qui le concerne et je veux le recupérer plusieur fois s'il y a plusieurs qualifications avec le meme id_actif_menace_vulnerabilite ce qui n'est pas le cas pour l'instant.
cecile38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 10h51   #10
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 846
Points : 1 322
Points : 1 322
déjà un truc que je remarque dans ta table qualification:
version et valide sont toujours à 1 ou 0 et inverse l'un par rapport à l'autre?
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 10h56   #11
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 143
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 143
Points : 19
Points : 19
on ne se sert pas de la colonne version donc je pense pas qu'il y ait un soucis avec ça.
cecile38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 11h19   #12
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 846
Points : 1 322
Points : 1 322
donc le count ne sert à rien déjà car tu veux la liste des occurrences et pas le nombre de fois qu'il y en a eu, c'est ça?

un truc genre ça devrait aller:
Code sql :
1
2
3
SELECT declaration,id_actif
FROM t_qualification
LEFT JOIN t_actif_menace_vulnerabilite m ON actif_menace_vulnerabilite=m.id
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 13h43   #13
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 143
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 143
Points : 19
Points : 19
en fait j'ai vraiment besoin du group by pour bien regouper par id_actif et avec le join j'ai le meme problème
cecile38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 13h53   #14
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
Donnez un jeu de test, vos données et vos resultats, ainsi que ceux attendus, car j'avoue avoir du mal a comprendre votre demande

Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 15h53   #15
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 846
Points : 1 322
Points : 1 322
c'est pas très clair, en effet, car elle est à fond dans son application et que nous on a pas toute la sémantique, mais bon pas grave...

tu as pas dit si ça te retournait au moins ce que tu attendais, même pas groupé... si c'est bon alors tu as la possibilité suivante:

on peut utiliser group_concat:
Code sql :
1
2
3
4
SELECT group_concat(declaration),id_actif
FROM t_qualification
LEFT JOIN t_actif_menace_vulnerabilite m ON actif_menace_vulnerabilite=m.id
GROUP BY id_actif
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 17h18   #16
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 143
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 143
Points : 19
Points : 19
je m'excuse pour le manque de précisions de ma part

Je vais essayer d'etre plus claire :

En fait, pour chaque déclaration, j'ai un ensemble de qualifications.
Chaque qualification a une actif_menace_vulnerabilite qui lui correspond donc un id_actif.

Le problème c'est que pour ma déclaration, je voudrais récupérer autant d'enregistrements que de qualifications meme si certaines qualifications ont des id_actif_menace_vulnerabilite identiques.

Pour l'instant, quand j'ai plusieurs qualifications avec des id_actif_menace_vulnerabilite identiques, je recupère 1 seul enregistrement donc un seul id_actif.

J'espère avoir été plus claire.
cecile38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 17h33   #17
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 846
Points : 1 322
Points : 1 322
est ce que ma requête te donne un résultat cohérent avec ce que tu cherche déjà?
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 17h37   #18
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 143
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 143
Points : 19
Points : 19
oui c'est cohérent par contre si j'ai par exemple 10 qualifications sur ma déclaration, l'objet récupéré n'aura pas forcément une taille de 10 si les qualifications en question ont des id_actif_menace_vulnerabilite identiques

En fait, le résultat de ma requete me permet de remplir un camembert d'actifs en flex. Il se remplit bien avec les bons actifs mais le pourcentage associé à chaque actif n'est pas bon du fait que le nombre d'id_actif récupéré n'est pas bon.
cecile38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 17h43   #19
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 846
Points : 1 322
Points : 1 322
...comment ça il est pas bon?

tu veux pas les id_actif alors mais leur nombre?
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 17h51   #20
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 143
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 143
Points : 19
Points : 19
oui les id_actif récupérés sont bons mais leur nombre n'est pas bon
cecile38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h22.


 
 
 
 
Partenaires

Hébergement Web