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 :

Problème avec SELECT


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Par défaut Problème avec SELECT
    Bonjour, voici mon problème, mais avant un bref rappel du but du script.

    J'ai une table de donnée qui s'appelle cit_sentence qui contient des phrases pour lesquelles on peut voter. Elle possède les champs suivants :
    id, author, sentence, score

    Ensuite j'ai une autre table de données qui s'appelle cit_vote où elle possède :
    id_sentence, id_voter, score.

    Lorsqu'une personne vote pour la phrase désirée qui se trouve ds la première table. ca ajoute dans la deuxième table une ligne avec l'id du voteur, l'id de la phrase et le résultat.

    Je veux maintenant afficher les phrases pour lesquels la personne n'a pas encore voté, cad ou les données (id_sentence,id_vote) ne se trouve pas encore dans la deuxième table. Je faisais donc comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $sql = "SELECT * FROM cit_sentence LIMIT " . $start . ", ".$numentries."";
    $req = mysql_query($sql) or die($sql."<br>".mysql_error()) ;
     
    while ($result = mysql_fetch_array($req)) {
    	$sqla = "SELECT * FROM cit_vote WHERE id_sentence =\"".$result['id']."\" AND id_voter =\"".$_SESSION['Id']."\"";
    	$reqa = mysql_query($sqla) or die($sqla."<br>".mysql_error()) ;
     
    	if (mysql_num_rows($reqa) < 1) {
    blablabla			
    }
    Maintenant pour faciliter, je voudrais avoir tout cela en une seul requete mysql. En fait pour l'affichage des pages (1 - 2 - 3) se compliquent avec ce que j'ai fait ci-dessus

    Merci d'avance,

    Thomas.

  2. #2
    rsc
    rsc est déconnecté
    Membre émérite
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT AUTHOR, SENTENCE FROM CIT_SENTENCE
    EXCEPT
    SELECT ID_VOTER, ID_SENTENCE FROM CIT_VOTE
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT AUTHOR, SENTENCE FROM CIT_SENTENCE
    WHERE NOT EXIST(SELECT * FROM CIT_VOTE
      WHERE ID_SENTENCE = CIT_SENTENCE.SENTENCE
      AND ID_VOTER = CIT_SENTENCE.AUTHOR)
    Il est infiniment préférable de donner chaque fois qu'on le peut à une clé étrangère le même nom que le champ auquel elle fait référence. Ca rend les requêtes beaucoup plus faciles à écrire et à comprendre

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Par défaut
    Salut,

    J'ai essayé tes 2 codes mais il me renvoie tous les deux une erreurs. Ils disent que la syntaxe n'est pas correct

  4. #4
    rsc
    rsc est déconnecté
    Membre émérite
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Par défaut
    Pour la 1ère syntaxe, je suppose que MySql ne supporte pas. Pour la 2de, essaie avec un S à EXISTS

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Par défaut
    Merci beaucoup, ca marche parfaitement à présent !

    Un grand merci

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

Discussions similaires

  1. [SQL] Problème avec SELECT COUNT(*)
    Par jpascal dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/11/2006, 12h37
  2. [MySQL] [BDD] Problème avec SELECT "dynamique"
    Par Vecine dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/03/2006, 11h11
  3. Problème avec select sous MYSQL
    Par Thomad dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/01/2006, 11h26
  4. problème avec select sur onchange
    Par Kerod dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/12/2005, 14h05
  5. Problème avec select top
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 10/12/2004, 14h55

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