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 :

Select enreg sans jointure et conditionner par une autre table


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Par défaut Select enreg sans jointure et conditionner par une autre table
    PHP5 / MYSQL 5

    Bonjour,

    J'ai une problème et je n'arrive pas à trouver la bonne requete.

    J'ai 2 tables Mysql :

    Sondage :
    Id | Date | Question | Reponse1 | Reponse2 | Reponse 3


    Sondage_pseudo
    Id | id_sondage | pseudo | reponse | ip


    J'ai un ensemble d'enregistrement dans la table sondage ( 1 enreg = 1 sondage )
    Je sauvegarde dans une table sondage_pseudo à chaque fois qu'un membre repond le numero du sondage dans id_sondage et son pseudo

    Mon problème est que je souhaite afficher dans l'espace membre UNIQUEMENT les enregistrements de la table sondage où le pseudo n'a pas
    répondu.

    Le choix de l'enregistrement est conditionné par le fait que le pseudo n'ai pas deja repondu
    à ce Sondage (NON presence enreg dans sondage_pseudo sondage_pseudo.id_sondage = sondage.id and pseudo='$_SESSION[pseudo]'


    J'ai donc 2 tables sans jointure possible.

    Exemple concret ( je souhaite TOUT sauf cette enregistrement ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM sondage S, sondage_pseudo P 
    WHERE ( S.id = P.id_sondage AND P.pseudo = 'seb' ) 
    ORDER BY RAND( ) LIMIT 1

    Si je teste en indiquant que je ne veux surtout pas de correspondance, ca ne fonctionne car il n'y a pas de jointure possible ..

    NE FONCTIONNE PAS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM sondage S, sondage_pseudo P 
    WHERE ( S.id != P.id_sondage AND P.pseudo != 'seb' ) 
    ORDER BY RAND( ) LIMIT 1
    J'ai essayé avec EXISTS, SOUS REQUETES mais je ne m'en sors pas..


    Quelqu'un a une idée de comment faire?

    Merci
    Sébastien

  2. #2
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Le NOT EXISTS devrait pourtant vous permettre de resoudre ce probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * from sondage S where 
      NOT EXISTS ( SELECT 1 from sondage_pseudo P where S.id= P.id_sondage)
    Bon courage

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Par défaut merci
    Je te remercie pour ta réponse, effectivement cela fonctionne.

    J'ai bien compris le principe, je vais ainsi pouvoir l'utiliser à l'avenir pour d'autre application.

    Merci bcp pour ton aide,
    Séb

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 04/12/2013, 21h22
  2. [MySQL] Faire une select mais sans jointure !
    Par seksaki dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/04/2013, 16h02
  3. [MySQL] [MySQL] Select avec WHERE sur un champs d'une autre table ?
    Par danydan01 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/05/2011, 16h05
  4. Réponses: 4
    Dernier message: 28/05/2010, 17h11
  5. Réponses: 5
    Dernier message: 10/12/2007, 15h24

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