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

 MySQL Discussion :

Opérateur OR


Sujet :

MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Points : 6
    Points
    6
    Par défaut Opérateur OR
    Bonjour à tous,

    je ne veux pas afficher les lignes qui contiennent berger ou sphynx je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from Race WHERE nom NOT LIKE '%berger%' OR nom NOT LIKE '%sph%';
    ça ne fonctionne pas mais quand je veux afficher les lignes qui contiennent seulement berger ou sphynx cela fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql> select * from Race WHERE nom LIKE '%berger%' OR nom LIKE '%sph%';
    j'ai un peu de mal à comprendre la logique

    Merci d'avance pour vos réponses
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    La négation de nom LIKE '%berger%' OR nom LIKE '%sph%', c'est NOT (nom LIKE '%berger%' OR nom LIKE '%sph%') qui peut aussi s'écrire NOT nom LIKE '%berger%' AND NOT nom LIKE '%sph%'.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 380
    Points : 19 062
    Points
    19 062
    Par défaut
    Salut ryosaebam.

    Ce que tu ne comprends pas se nomme en mathématique (algèbre de Boole) les lois de morgan : https://fr.wikipedia.org/wiki/Lois_de_De_Morgan

    Tu as une proposition : "a ou b". Tu cherches à obtenir la négation : "non (a ou b)". Cela va se traduire par : "non a et non b"

    Par simplification, tu dois retenir que la négation d'un et devient un ou. Et la négation d'un ou dévient un et.

    Voici un exemple de fonctionnement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
            default character set `latin1`
            default collate       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `clef`  integer  unsigned not null auto_increment primary key,
      `val`   varchar(255)      not null
    ) engine=innoDB
      default charset=latin1 collate=latin1_general_ci
      row_format=compressed
    --------------
     
    --------------
    insert into `test` (`val`) value
      ('berger'), ('renard'), ('hippocampe'), ('sphynx')
    --------------
     
    --------------
    select * from test
    --------------
     
    +------+------------+
    | clef | val        |
    +------+------------+
    |    1 | berger     |
    |    2 | renard     |
    |    3 | hippocampe |
    |    4 | sphynx     |
    +------+------------+
    --------------
    select * from test where val like 'berger' or val like 'sphynx'
    --------------
     
    +------+--------+
    | clef | val    |
    +------+--------+
    |    1 | berger |
    |    4 | sphynx |
    +------+--------+
    --------------
    select * from test where not (val like 'berger' or val like 'sphynx')
    --------------
     
    +------+------------+
    | clef | val        |
    +------+------------+
    |    2 | renard     |
    |    3 | hippocampe |
    +------+------------+
    --------------
    select * from test where val not like 'berger' and val not like 'sphynx'
    --------------
     
    +------+------------+
    | clef | val        |
    +------+------------+
    |    2 | renard     |
    |    3 | hippocampe |
    +------+------------+
    --------------
    commit
    --------------
     
    --------------
    set autocommit = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    @ al1_24 : le NOT se met juste avant le LIKE et non avant la variable.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2016
    Messages : 2
    Points : 6
    Points
    6
    Par défaut
    Bonjour Artemus24 et al1_24

    C'est exactement la question que je me posais. Pourquoi le ou devenait un et avec la négaation. Merci beaucoup pour vos explications clair et précise.
    j'ai mis http://www.jcz.fr/ dans mes favoris

    A+

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

Discussions similaires

  1. Utilisation des opérateurs 'shr' et 'and'
    Par cicinho dans le forum Langage
    Réponses: 26
    Dernier message: 18/09/2009, 18h28
  2. [MySQL] probléme select opérateur AND
    Par Anardil dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/07/2007, 14h48
  3. [Théorie des Graphes] Les opérateurs AND et OR
    Par bitou dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 18/03/2007, 03h01
  4. Opérateur logique And entre 2 conditions
    Par User dans le forum Langage
    Réponses: 1
    Dernier message: 16/09/2006, 12h08
  5. Réponses: 3
    Dernier message: 31/08/2006, 10h39

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