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 :

COUNT dans une jointure


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 32
    Points
    32
    Par défaut COUNT dans une jointure
    Bonjour

    Voilà j'ai une requete dans une boucle et pour éviter cela j'ai créé une requete qui foire (sinon je ne serais pas là)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	$return_news = query("SELECT 
    		N.id, N.titre, N.texte, N.timestamp, N.valider, N.verouille, N.time_val,  N.id_valideur, N.id_posteur,
    		U.pseudo AS pseudo1,U.photo_couv,
    		UU.pseudo AS pseudo2,
    		COUNT(NC.id) AS nbre_com
    		FROM news N, users U, users UU, news_com NC
    		WHERE N.valider='1' AND U.id=N.id_posteur AND UU.id=N.id_valideur AND NC.id=N.id
    		ORDER by N.time_val DESC LIMIT 5")or die(mysql_error());
    La requete dans la boucle est le COUNT

    et je reçois le message suivant :

    Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause
    J'en conclus que c'est pas bon, mais je ne vois pas comment faire autrement puisque les 2 requêtes sont liées

    Une idée?

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Règle du forum : pas de code php (ou autre) dans ce forum, uniquement du SQL, merci de nettoyer ton post.
    Si ton problème vient de php, il y a un forum pour ce langage.

    Ceci dit, il me semble que le message d'erreur est clair !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par Médiat
    Règle du forum : pas de code php (ou autre) dans ce forum, uniquement du SQL, merci de nettoyer ton post.
    Si ton problème vient de php, il y a un forum pour ce langage.

    Ceci dit, il me semble que le message d'erreur est clair !
    hum j'ai posté ici car c une requete et les request c'est sql, non?

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Oui, mais pas
    ou

  5. #5
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    picsoun, voici une requête SQL sans PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT N.id, N.titre, N.texte, N.timestamp, N.valider, 
           N.verouille, N.time_val,  N.id_valideur, N.id_posteur, 
           U.pseudo AS pseudo1,U.photo_couv, UU.pseudo AS pseudo2,
           COUNT(NC.id) AS nbre_com
      FROM news N, users U, users UU, news_com NC
     WHERE N.valider='1' 
       AND U.id=N.id_posteur
       AND UU.id=N.id_valideur
       AND NC.id=N.id
     GROUP BY N.id, N.titre, N.texte, N.timestamp, N.valider, 
              N.verouille, N.time_val,  N.id_valideur, N.id_posteur, 
              U.pseudo AS pseudo1,U.photo_couv, UU.pseudo AS pseudo2
     ORDER by N.time_val DESC 
     LIMIT 5
    Juste une remarque, si ton SGBD le supporte, utilise plutôt les jointures normalisées (cf Les jointures, ou comment interroger plusieurs tables)

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

Discussions similaires

  1. [Access] Probleme de count dans une requete sql
    Par castelligreg dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/04/2006, 16h20
  2. [sql]Probleme de count dans une requete sql (sous access)
    Par castelligreg dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/04/2006, 16h06
  3. Ordre d'exécution dans une jointure externe
    Par Pero dans le forum Langage SQL
    Réponses: 17
    Dernier message: 20/09/2005, 12h22
  4. Count dans une vue
    Par gldfdp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/07/2005, 05h55
  5. un count sur une jointure et ca ne fonctionne pas
    Par elbronziero dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/10/2004, 11h23

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