Probleme sur une requête

andoid Messages postés 108 Date d'inscription samedi 31 mars 2012 Statut Membre Dernière intervention 16 juin 2013 - 12 oct. 2011 à 22:06
pradiergael Messages postés 13 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 11 décembre 2011 - 1 déc. 2011 à 19:24
Bonjour j'ai une table vehicule qui contient des véhicules loués,marque,modéle,catégorie(Utilitaire ou voiture) le numero de l'agence dans laquelle elle l'est.
Ainsi je voulais afficher les agences qui ont un utilitaire pour chaque marque j'ai fait ceci c'est à dire tous les marque existant(Ford,Renault,Peugeot)

select distinct v.num_ag,v.categorie,v.marque
from vehicule v, vehicule vh
where v.num_ag=vh.num_ag and v.marque<>vh.marque
and v.categorie='Utilitaire' and vh.categorie='Utilitaire';

mon code ne marche pas

3 réponses

lherblot Messages postés 18 Date d'inscription mardi 11 octobre 2011 Statut Membre Dernière intervention 17 février 2012 1
14 oct. 2011 à 18:33
Bonjour.
Je ne suis pas expert, mais je ne pense pas que tu puisses faire une requête en utilisant deux fois la même table...
En gros, ça revient un peu à dire :
- je veux cette voiture mais je la veux (v.num_ag=vh.num_ag) ce qui ne sert à rien mais n'est pas une erreur;
- je veux cette marque mais je ne la veux pas (v.marque<>vh.marque) ce qui est contradictoire et qui peut donc générer une erreur ou ne renvoyer aucun résultat.
Si tu veux une solution je te conseille de mettre la structure complète de ta table en expliquant à quoi correspond chaque champs et en fournissant un ou deux enregistrement pour l'exemple. Ce sera plus simple.

-----------------------------------------
Loïc Herblot
Créateur de sites web pour professionnels
http://www.loicherblot.fr
0
sanchem Messages postés 19 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 26 mars 2012 2
30 nov. 2011 à 17:09
Bonjour,

Déjà lherblot a totalement raison.

Par rapport aux infos que tu as données, j'écrirai ça :

select num_ag,categorie,marque
from vehicule
where categorie='Utilitaire'
group by num_ag,categorie,marque;

J'espère que ça répond à ton besoin.

Au passage, à ta place le test je ne le ferai pas sur categorie='Utilitaire'. Dans ta base, il doit bien y avoir un code catégorie, non ?
0
pradiergael Messages postés 13 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 11 décembre 2011
1 déc. 2011 à 19:24
Bonjour,

1- peut-on avoir le modèle de données
2- Messieurs lherbot et sanchem, je ne suis pas d'accord avec vous. Rien n'interdit de faire une autojointure

exemple microsoft : http://msdn.microsoft.com/fr-fr/library/ms177490.aspx

mon angle d'attaque : le nombre de marques
1. j'enleve les doublons, je veux une occurrence au plus de chaque marque
select distinct num_ag,marque 
     from vehicule
     where categorie='utilitaire'


2. je teste le nombre de marques trouvées

select num_ag 
from (
     select distinct num_ag,marque 
     from vehicule
     where categorie='utilitaire'
     ) v2 
group by num_ag
having count(marque) = select count( distinct marque ) from vehicule)


(group by est à priori inutile)
0