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

PHP & Base de données Discussion :

mysql requete d'une table en fonction d'une autre


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 25
    Par défaut mysql requete d'une table en fonction d'une autre
    Bonjour,

    je me permets de vous écrire pour solliciter votre aide, je cherche à faire une requête, je tourne en rond et je ne trouve pas de solution.

    J'ai une première table "articles" :

    id_article nom_article actif_article

    J'ai une deuxième table "rayon" :

    id_rayon id_article classe

    Je cherche à sélectionner tous les articles de la classe x qui ne sont pas dans la table rayon.

    J'ai essayé ce genre de requête mais ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'SELECT `articles`.`id_article`,`nom_article`
    	  FROM `articles`
    	  WHERE `rayon`.`id_article` NOT IN("SELECT `id_article` FROM `rayon` WHERE `classe` = "x")
    	  AND `actif_article` = "oui" '

    Merci pour votre aide, j'ai essayé avec NOT EXISTS, mais ce n'est pas supporté par mon serveur.


  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est l'id_article dans articles que tu cherches, pas dans rayon :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT id_article, nom_article
    	  FROM articles
    	  WHERE classe = "x"
              AND actif_article = "oui"
              AND id_article NOT IN (SELECT id_article FROM rayon)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 25
    Par défaut
    Alors j'ai fait ça, étant donné que la classe se trouve dans la table rayon

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_article, nom_article
    	  FROM articles
    	  WHERE actif_article = "oui"
              AND id_article NOT IN (SELECT id_article FROM rayon WHERE classe = "x")

    mais ça ne fonctionne pas


  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Par défaut
    Je cherche à sélectionner tous les articles de la classe x qui ne sont pas dans la table rayon.
    Tu veux plutôt dire "tous les articles qui ne sont pas dans les rayons de classe 'x' " (sinon il y a un soucis de structure de tes tables..)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT id_article, nom_article
    FROM articles
    WHERE actif_article = "oui"
    AND id_article IN (SELECT id_article FROM rayon WHERE classe <> "x")

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 25
    Par défaut
    Tu veux plutôt dire "tous les articles qui ne sont pas dans les rayons de classe 'x'
    oui c'est ça, mais ce que tu proposes ne fonctionne pas

    J'ai remarqué que j'obtenais le même résultat avec les deux requetes suivantes :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT id_article, nom_article
    	  FROM articles
    	  WHERE actif_article = "oui"
              AND id_article NOT IN (SELECT id_article FROM rayon WHERE classe = "x")
     
    SELECT id_article, nom_article
    	  FROM articles
    	  WHERE actif_article = "oui"

    Comme s'il ne tenait pas compte de NOT IN...
    Y a t'il une autre façon de faire ?

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Par défaut
    En me relisant je me rend compte que ce que je t'ai proposé sélectionne les articles actifs qui sont pas dans les rayons de classe x..


    Mais cette requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_article, nom_article
    FROM articles
    WHERE actif_article = "oui"
    AND id_article NOT IN (SELECT id_article FROM rayon WHERE classe = "x")

    te retournera tous les articles actifs qui ne sont pas dans les rayons de classe x, ainsi que ceux qui ne sont carrément pas dans la table rayon du tout. Est-ce bien cela que tu veux?


    Et si tu exécutes cette requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_article FROM rayon WHERE classe = "x"

    Est-ce qu'elle te retourne des résultats? Si oui, est-ce que ces id_article sont présents dans la table article avec un actif à oui?

Discussions similaires

  1. trier une table en fonction d'une autre
    Par boss_gama dans le forum Langage SQL
    Réponses: 7
    Dernier message: 18/10/2009, 11h17
  2. Afficher une table en fonction d'une autre
    Par buzz68180 dans le forum WinDev
    Réponses: 7
    Dernier message: 25/05/2009, 11h21
  3. Réponses: 2
    Dernier message: 20/12/2008, 07h51
  4. Réponses: 2
    Dernier message: 11/09/2007, 11h15
  5. Mise a jour d'une table en fonction d'une base distante
    Par Thor Tillas dans le forum Access
    Réponses: 1
    Dernier message: 11/01/2007, 09h27

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