IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Sous requête et Limit ?


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 35
    Points : 31
    Points
    31
    Par défaut Sous requête et Limit ?
    Bonjour,

    Je me trouve devant une situation que je n'arrive pas à résoudre et qui pourtant me semble réalisable.
    Je viens donc vous demander un peu d'aide pour m'aiguiller !

    Tables :

    ++++ vehicule ++++
    id_vehicule | marque | modele

    ++++ offre ++++
    id_offre | id_vehicule | finition | prix

    Exemples :

    ++++ vehicule ++++
    1 | Fiat | Panda
    2 | Peugeot | 308

    ++++ offre ++++
    1 | 1 | 1.3 MultiJet | 12300
    2 | 1 | 1.1 MultiJet | 10200
    3 | 1 | 1.3 MultiJet | 12400
    4 | 2 | 1.6 Hdi 90 Premium | 17300
    5 | 2 | 1.6 Hdi 110 Premium | 19300
    6 | 2 | 2.0 Hdi 136 Premium | 20300

    Requête classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select v.marque, v.modele, o.finition, o.prix
    from vehicule as v, offre as o
    where v.id_vehicule = o.id_vehicule
    Retourne
    Fiat | Panda | 1.3 MultiJet | 12300
    Fiat | Panda | 1.1 MultiJet | 10200
    Fiat | Panda | 1.3 MultiJet | 12400
    Peugeot | 308 | 1.6 Hdi 90 Premium | 17300
    Peugeot | 308 | 1.6 Hdi 110 Premium | 19300
    Peugeot | 308 | 2.0 Hdi 136 Premium | 20300

    Je voudrais faire une sous requête pour n'afficher que les 2 premières lignes de chaque véhicule.

    Résultat souhaité :
    Fiat | Panda | 1.3 MultiJet | 12300
    Fiat | Panda | 1.1 MultiJet | 10200
    Peugeot | 308 | 1.6 Hdi 90 Premium | 17300
    Peugeot | 308 | 1.6 Hdi 110 Premium | 19300

    Je pense que c'est possible avec une sous requête mais je n'arrive pas à la finaliser !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select v.marque, v.modele, o.finition, o.prix
    from vehicule as v, offre as o
    where v.id_vehicule = o.id_vehicule
    and id_offre in (
    	select id_offre
    	from offre as o2
    	where o2.id_vehicule = v.id_vehicule
    	limit 0,2
    )
    mais pas de limit possible dans une sous requête apperemment.

    Merci d'avance pour le coup de pouce
    A bientôt
    Sébastien

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Comme tu ne peux pas utiliser de LIMIT dans les sous-requêtes, tu peux passer par des jointures.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT v.marque, v.modele, o.finition, o.prix, count( o2.id_offre ) count_o2
    FROM vehicule v
       INNER JOIN offre o ON v.id_vehicule = o.id_vehicule
       LEFT OUTER JOIN offre o2 ON o.id_vehicule = o2.id_vehicule
          AND o2.id_offre < o.id_offre
    GROUP BY o.id_offre
    HAVING count_o2 < 2
    ORDER BY v.marque, o.id_offre
    Les 2 premières offres pour un véhicule sont celles pour lesquelles il y a moins de 2 offres pour le même véhicule et ayant un id_offre inférieur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête et sous-requête complexes - limites de MySQL
    Par flashguitou dans le forum Requêtes
    Réponses: 4
    Dernier message: 06/06/2014, 02h23
  2. impossible d'utiliser LIMIT 1 dans une sous-requête
    Par Christophe Charron dans le forum Requêtes
    Réponses: 13
    Dernier message: 19/12/2009, 22h42
  3. Contourner le non-support de limit dans une sous-requête
    Par Christophe Charron dans le forum Requêtes
    Réponses: 7
    Dernier message: 04/09/2007, 10h45
  4. AVG, sous-requête et LIMIT
    Par macmillan dans le forum Requêtes
    Réponses: 5
    Dernier message: 26/10/2006, 01h01
  5. Limitation d'Access pour les sous-requêtes ?
    Par guidav dans le forum Access
    Réponses: 5
    Dernier message: 19/10/2006, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo