Requete sql

Fermé
julien - 4 juin 2007 à 08:49
 sam - 1 nov. 2008 à 02:29
Bonjour,
j'ai besoin de vous pour une requete sql,
voila imaginons un cas simple, on a plusieurs marque de voiture avec plusieurs modeles sur une table, et je voulais savoir s'il etais possible par une requete de recuperer classé par marque la liste des modèles de voiture.je veux donc recuperer la marque, suivi de sa liste de modèle.
J'espere que j'ai été clair,
merci de m'aider

3 réponses

Pool Orion Messages postés 124 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 15 juin 2007 55
4 juin 2007 à 10:15
Salut Julien,

Tu ne pourras pas récupérer en une seule requête, la marque suivi de la liste des modèles par contre tu peux très bien réaliser un tri sur la marque et même sur les modèles. Prenons un exemple simplifié :

Table voitures :
Marque | Modele
A | 1
A | 2
B | 1
B | 2

1) Select Marque, Modele from Voitures order by Marque, Modele te retourne le tableau que tu vois si dessus (j'ai déjà trié la table dans l'exemple mais elle ne l'est forcément).

Si tu veux vraiment avoir la liste des modèles pour chaque marque, tu devras utiliser deux requètes :
1) Select Marque from Voitures order by Marque
2) pour chaque record retourné
Select Modele from Voitures where Marque = ...

Maintenant celon le réceptacle, il te faudra peut-être utiliser les curseurs en lieu et place de "simple Select".

Voilà j'espère que ça t'aidera.
1
merci Pool Orion
ca me donne deja une piste
0
Access est vraiment mal fait pour ne pas qu'on puisse faire ça facilement.
J'ai vu qu'avec d'autre sgbd on pourrait faire
SELECT voitures.Marque,concat(voitures.modele)
FROM voitures
GROUP BY voitures.Marque;

Evidemment sous access la fonction concat n'existe pas, n'a pas d'équivalent et ne peut même pas être programmé en vba.

Bon dans le cas ou il n'y a qu'un nombre tres limité de modele par marque possible, on peut faire une premiere requete Prem

SELECT voitures.Marque,first(voitures.modele)
FROM voitures
GROUP BY voitures.Marque;

Pour obtenir la premier modèle de chaque marque.
Puis la requete Deux

SELECT voitures.Marque,first(voitures.modele)
FROM voitures
WHERE voitures.modele NOT IN (SELECT Prem.modele FROM Prem)
GROUP BY voitures.Marque;
Ce qui permet d'obtenir le deuxième modèle de chaque marque (Remplacer éventuellement voitures.modele par un identifiant unique)

Etc. en esperant que tu n'a pas 25 modele possible.

Donc cette solution n'est pas génial mais c'est la seule que j'ai trouvé permettant d'éviter le vba. Si quelqu'un a mieu je suis preneur
0