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

Langage SQL Discussion :

Sous requete de sous requete..(trop long)


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 104
    Points : 34
    Points
    34
    Par défaut Sous requete de sous requete..(trop long)
    Bonjour à tous ,

    Avez vous une idée de comment optimiser ce type de requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select * from messages 
    where numero in 
    (select numero - 1 from messages where numero in 
    (Select numero  from Messages where age = 1 or age = 7 or age = 13 and numero % 2 = 0 )) 
    or numero in 
    (Select numero  from message where age = 1 or age = 7 or status = 13 and numero % 2 = 0 )
    Donc recuperer tout les numero et les numero - 1 de cette requette :
    Select numero from message where age = 1 or age = 7 or status = 13 and numero % 2 = 0
    Et d'ensuite afficher tt les lignes qui correspondent à ce numéro...

    Merci

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    numero n'est pas unique?

    Peux tu donner un petit jeu d'essai?

    merci

  3. #3
    Scorpi0
    Invité(e)
    Par défaut
    Salut,

    Pour commencer, ta requête est un peu redondante, cela doit suffire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select * from messages 
    where numero in 
    (select numero - 1 from (Select numero  from Messages where age = 1 or age = 7 or age = 13 and numero % 2 = 0 )) 
    or numero in 
    (Select numero  from message where age = 1 or age = 7 or status = 13 and numero % 2 = 0 )
    Ou alors, une vue implicite t'éviteras une double exécution je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    with myNumbers as
    (
    Select numero  
    from message 
    where age = 1 
    or age = 7 
    or status = 13 
    and numero % 2 = 0 
    )
    select * 
    from messages 
    where numero in (select numero - 1 from myNumbers ) 
    or numero in (select numero from myNumbers )
    Avec un peu d'imagination sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    with myNumbers as
    (
    Select numero  
    from message 
    where age = 1 
    or age = 7 
    or status = 13 
    and numero % 2 = 0 
    )
    select distinct m.* 
    from messages m inner join myNumbers n 
    on m.numero = n.numero or m.numero = n.numero - 1
    Sans jeu d'essai, je ne sais pas si tout est très juste, mais ça donne des idées.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 104
    Points : 34
    Points
    34
    Par défaut
    Si numéro est unique ici .
    D'autres idées d'optimisation ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/05/2009, 15h44
  2. Optimiser une Requetes SQL sous ASP
    Par NeHuS dans le forum ASP
    Réponses: 8
    Dernier message: 18/04/2005, 16h26
  3. [ORACLE][SQL] procedure sous delphi avec une requete SQL
    Par nivet dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/11/2004, 13h43
  4. (VBA-A] Requete access sous VBA
    Par vanima dans le forum VBA Access
    Réponses: 12
    Dernier message: 20/07/2004, 16h07
  5. Requete requête sous sybase
    Par eddie dans le forum Sybase
    Réponses: 3
    Dernier message: 02/04/2003, 14h51

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