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 :

Contourner le non-support de limit dans une sous-requête


Sujet :

Requêtes MySQL

  1. #1
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut Contourner le non-support de limit dans une sous-requête
    Bonjour,
    il y existe-t'il une syntaxe "propre" pour contourner le fait que je ne puisse pas intégrer de "limit" dans une sous-requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from _courriel_recus_brut where sequence in(select sequence from _courriel_recus_brut where uticptbal_cleunik =10000001 group by sequence order by sequence desc limit 5)
    à part traiter la sous-requête préalablement et séparément ?

  2. #2
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 514
    Par défaut
    Citation Envoyé par Christophe Charron Voir le message
    Bonjour,
    il y existe-t'il une syntaxe "propre" pour contourner le fait que je ne puisse pas intégrer de "limit" dans une sous-requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from _courriel_recus_brut where sequence in(select sequence from _courriel_recus_brut where uticptbal_cleunik =10000001 group by sequence order by sequence desc limit 5)
    à part traiter la sous-requête préalablement et séparément ?
    Tu peux traiter ta requête sans faire de sous requête en faisant une jointure. Ainsi tu pourras utiliser le LIMIT.
    Me demande pas de t'aider à la faire, actuellement je suis dans la constéllation fracasse mais à vu d'oeil elle peut être fait en un bloque.

  3. #3
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 514
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM _courriel_recus_brut WHERE sequence IN(SELECT sequence FROM _courriel_recus_brut WHERE uticptbal_cleunik =10000001 GROUP BY sequence ORDER BY sequence DESC LIMIT 5)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM _courriel_recus_brut AS a INNER JOIN _courriel_recus_brut AS b
    ON a.sequence  = b.sequence 
    WHERE b.uticptbal_cleunik =10000001 GROUP BY b.sequence ORDER BY b.sequence DESC LIMIT 5
    Test avec ça voir si ça fonctionne.

  4. #4
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Bonjour,
    et merci pour la réponse.
    En fait je veux tous les _courriels_recus_brut des 5 dernières séquences et pas le dernier de chacune des 5 dernières séquences. A priori, cette syntaxe limite à 5 résultats sur _courriels_recus_brut.

  5. #5
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 514
    Par défaut
    Le group bu t'est utile pour la séquence ?

  6. #6
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    oui, sinon il ne donne que 5 rows de la dernière séquence

  7. #7
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 514
    Par défaut
    Tu le fais en deux temps alors.
    SELECT sequence FROM _courriel_recus_brut WHERE uticptbal_cleunik =10000001 GROUP BY sequence ORDER BY sequence DESC LIMIT 5;
    Le résultat tu le place dans une table temporaire.

    SELECT * FROM _courriel_recus_brut WHERE sequence IN(select * from maTableTemp)

    C'est un technique de "chien malade" mais ça peut contourner ton problème un peut particulier.

  8. #8
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    C'est en effet le contournement que j'avais retenu.
    Merci de t'être interessé à mon problème.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/07/2019, 09h42
  2. Requête UNION dans une sous-requête, est-ce vraiment non autorisé
    Par sophie) dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 15/01/2012, 17h49
  3. Réponses: 1
    Dernier message: 24/10/2011, 11h07
  4. Ingres - limite dans une sous-requête
    Par raphoun07 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/08/2011, 17h05
  5. 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

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