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 :

AND et/ou OR, mais surtout end


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 258
    Points : 108
    Points
    108
    Par défaut AND et/ou OR, mais surtout end
    bonjour,

    trève de jeu de mots débile, j'ai un gros problème
    Lorsque j'effectue cette 1ère requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT idView
    FROM LinkLabelView
    WHERE (
    idLabel = '11'
    AND special = 'G'
    )
    J'obtiens 1,2,3,4,5,6,7,8,9 comme résultat (jusque là OK)

    Maintenant si j'effectue cett 2è requete,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT idView
    FROM LinkLabelView
    WHERE (
    idLabel = '4'
    AND special = 'P')
    J'obtiens 6,7,8,9,10,11 (jusque là OK)

    Je me dis qu'alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT idView
    FROM LinkLabelView
    WHERE (
    idLabel = '4'
    AND special = 'P'
    )
    AND (
    idLabel = '11'
    AND special = 'G')
    devrait me renvoyer 6,7,8,9.

    Eh bien non!! Il n'y a aucune réponse de retourner !
    Je suis vraiment trop con ou bien?!

  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
    bah non cest tout à fait normal
    sur une meme ligne idlabel ne peut pas etre égal à 4 et à 11 en meme temps


    essaie quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT a.idView
    FROM LinkLabelView a join LinkLabelView b
    WHERE (
    a.idLabel = '4'
    AND a.special = 'P'
    )
    AND (
    b.idLabel = '11'
    AND b.special = 'G')

  3. #3
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Pour le JOIn il manque le USING

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT a.idView
    FROM LinkLabelView a JOIN LinkLabelView b
    USING (idLabel)
    WHERE (
    a.idLabel = '4'
    AND a.special = 'P'
    )
    AND (
    b.idLabel = '11'
    AND b.special = 'G')



    Autre façon : imbriquer deux requêtes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT a.idView
    FROM LinkLabelView a
    WHERE (
    a.idLabel = '4'
    AND a.special = 'P'
    )
    AND a.idLabel IN (
    SELECT b.idLabel
    FROM LinkLabelView b
    WHERE(
    b.idLabel = '11'
    AND b.special = 'G'))
    -- Jasmine --

  4. #4
    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
    Citation Envoyé par Jasmine80
    Autre façon : imbriquer deux requêtes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT a.idView
    FROM LinkLabelView a
    WHERE (
    a.idLabel = '4'
    AND a.special = 'P'
    )
    AND a.idLabel IN (
    SELECT b.idLabel
    FROM LinkLabelView b
    WHERE(
    b.idLabel = '11'
    AND b.special = 'G'))
    cela m'étonnerait que cela fonctionne !
    car cela revient à dire que idLabel est en même temps égale à 4 et à 11. a moins qu'il y ait une subtilité que je n'ai pas vu

  5. #5
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Tu as raison ce que j'ai écrit est faux

    Si j'ai bien compris

    IdLabel => Special => IdView
    -------------------------------

    04 => P => 6
    04 => P => 7
    04 => P => 8
    04 => P => 9
    04 => P => 10
    04 => P => 11

    11 => G => 1
    11 => G => 2
    11 => G => 3
    11 => G => 4
    11 => G => 5
    11 => G => 6
    11 => G => 7
    11 => G => 8
    11 => G => 9

    on veut
    6, 7, 8, 9


    DONC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT a.idView
    FROM LinkLabelView a
    WHERE (
    a.idLabel = '4'
    AND a.special = 'P'
    )
    AND a.idVieuw IN (
    SELECT b.idVieuw
    FROM LinkLabelView b
    WHERE(
    b.idLabel = '11'
    AND b.special = 'G'))

    C'est donc .... AND a.idVieuw IN (SELECT b.idVieuw .....
    et non ....a.idLabel IN (SELECT b.idLabel ....



    Jasmine,
    -- Jasmine --

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/01/2015, 02h07
  2. parler de tout et de rien mais surtout de rien-du-tout
    Par Invité dans le forum La taverne du Club : Humour et divers
    Réponses: 241
    Dernier message: 18/04/2014, 18h56
  3. Réponses: 6
    Dernier message: 20/11/2009, 18h17
  4. [SAX] "SAXException XML document structures must start and end within the same entity"
    Par tdeco dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 23/08/2007, 21h53
  5. Réponses: 1
    Dernier message: 02/04/2007, 09h30

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