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 :

Optimisation d'une requete specifique


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut Optimisation d'une requete specifique
    Bonjour à tous,

    j'ai un petit trou et j'ai besoin de conseils.

    Voici mon probleme.
    J'ai une table de ce genre. Elle contient trois champs X Y Z ou X Y sont cles primaires
    Je voudrais selectionner tous les X ou Y = 1 ET Y = 2
    Comment je peux le faire ?

    Merci d'avance.
    J'ai cherche mais je n'ai aps trouve. je continue

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 56
    Points : 56
    Points
    56
    Par défaut comprend pas ?
    salut
    j'ai pas tres bien compris ?
    voici ce que j'ai compris
    select x
    from tab
    where y=1
    and y=2
    mais c'est sans doute pas ça :

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    Non justement car j'ai cela comme donnee.

    X Y
    1 1
    1 2
    2 1

    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT X WHERE Y = 1 ET Y = 2
    ET LA ca donne rien !

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Dîtes c'est pas un petit impossible d'avoir A LA FOIS Y = 1 et Y = 2 ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  5. #5
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    justement si.

    Mais pourtant l'article 1 a bien Y = 1 et Y = 2.

    Il y a un moeyn mais je ne me rappelle plus

    Avec des select Imbriques ca marche mais bon j'aimerais eviter

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 99
    Points : 110
    Points
    110
    Par défaut
    Il faut que tu fasse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select x from table where y = 1 or y = 2
    Tu ne veux pas que les deux conditions soient vrai en même temps (ce qui est impossible de toute façon....

  7. #7
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    En gros, j'aimerais eviter cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT X
    FROM table
    WHERE Y = valeur1
    AND X IN (SELECT X
    FROM table
    WHERE Y = valeur2
    AND X IN (etc etc etc)
    car c'est tres lourd

  8. #8
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Si je fais
    Code:
    SELECT X WHERE Y = 1 ET Y = 2


    ET LA ca donne rien !
    ;-) Logique floue ? Y a 1 chat connu qui est mort/pas mort de ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT t1.x
    FROM table t1 
    INNER JOIN table t2
    ON t1.x = t2.x
    WHERE t1.Y = valeur1  
    AND t2.Y = valeur2

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    TheLeadingEdge >> je suis tout-à-fait d'accord avec ta solution et je me disais que le mot clé INTERSECT doit retourner le même résultat mais avec des performances moindre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT T1.X
    FROM T1
    WHERE T1.Y = 1
    INTERSECT
    SELECT T1.X
    FROM T1
    WHERE T1.Y = 2;
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  10. #10
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    Oui c'est en effet la solution que j'ai choisie mais comme je ne connais pas le nombre de comparaison a effectuer, j'avais envioe de trouver plus simple mais c'est impossible.

    Merci beaucoup

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

Discussions similaires

  1. Optimisation d'une requete sur un champ texte
    Par TARMINE dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/06/2006, 13h41
  2. Optimisation d'une requete "TOP 5"
    Par gregb34 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/05/2006, 17h17
  3. Réponses: 5
    Dernier message: 14/04/2006, 18h58
  4. Optimisation d'une requete récurrente
    Par winzou dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 23/01/2006, 22h07
  5. optimisation d'une requete de recherche
    Par moog dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 06/04/2005, 16h58

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