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 :

Aide requete SQL


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Par défaut Aide requete SQL
    Bonjour,

    J'ai deux tables:
    -Une 'equipements' avec notamment un champs id_baie et un champs coeur.
    -une 'baies' avec un champs id et autres.

    Je voudrai faire une requête qui me sélectionne uniquement les baies où le champs cœur est à 0.

    Pour le moment j'ai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT baies.id,id_salle,baies.nom FROM baies,equipements 
    WHERE coeur=0 AND id_baie=baies.id AND id_salle=".$salle['id']." 
    GROUP BY baies.id
    Mais j'obtiens quand même les baies avec des cœurs. (Oui je débute en PHP/SQL)

    Là j'essaye de voire avec des sous requêtes mais je ne suis pas sur que ce soit très propre.. Et de toutes manière je n'y arrive pas encore.

    Une personne sympa pourrait m'aider? Merci!

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,

    description des tables + jeux test et résultat attendu.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Quoi qu'il en soit, il y a une erreur dans la requête: la clause GROUP BY sert pour agréger des informations, récupérer une MAX, MIN, AVG ... Or là il n'y en a apparemment pas besoin.

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Par défaut
    Tout d'abord merci de ta réponse rapide!

    equipements:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      id int(11)   auto_increment               
      nom varchar(255)                
      OS varchar(255)                 
      ip varchar(15)              
      mdp varchar(255)               
      mdp_enable varchar(255)             
      community varchar(255) l              
      id_baie int(11)                  
      coeur int(11)
    cœur valant '1' ou '0'.

    baies:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     id int(11)   auto_increment               
      id_salle int(11)                 
      nom varchar(255)
    La commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT baies.id,id_salle,baies.nom FROM baies,equipements 
    WHERE coeur=0 AND id_baie=baies.id AND id_salle=1
    GROUP BY baies.id"
    Me renvoie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     id  id_salle  nom  
     1    1      Baie a-e08 
     2    1      Baie a-d03 
     3    1      Baie G19 
     4    1      Baie D19 
     5    1      Baie P24
    la baie 'P24' contient un équipement avec cœur à '1' et un équipement avec cœur à '0', donc il me le renvoie quand même, ce que je ne veux pas.

    Est ce un peu plus claire? Merci encore!

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Ne connaissant pas votre sgbd cette requête risque de ne pas marcher (si c'est le cas indiquez l'erreur + le sgbd) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT distinct a.id, a.id_salle, a.nom
    from baies a
    inner join equipements b on b.id_baie = a.id
    WHERE id_salle = 1 and b.coeur = 0 
    and not exists (select 1 from equipements c where a.id = c.id_baie and c.coeur <> 0)

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Par défaut
    Ça marche parfaitement! Merci beaucoup!
    J'irai me renseigner sur le SELECT DISTINCT que je ne connaissais pas du tout et j'en aurai surement besoin. Merci encore!

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Une autre solution avec une seule référence aux tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      SELECT ba.id, ba.id_salle, ba.nom
        FROM baies ba
             INNER JOIN equipements eq
               ON eq.id_baie = ba.id
       WHERE ba.id_salle = 1
    GROUP BY ba.id, ba.id_salle, ba.nom
      HAVING max(eq.coeur) = 0

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

Discussions similaires

  1. [InterBase 6] Aide Requete SQL
    Par cyrilleT dans le forum Langage SQL
    Réponses: 9
    Dernier message: 20/06/2006, 10h45
  2. aide requete sql access 2000
    Par bab69 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 13/05/2006, 20h56
  3. Aide requete SQL ou fonction VBA
    Par nykola7 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/03/2006, 17h51
  4. Besoin d'aide requete sql
    Par dinde dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/10/2005, 09h09
  5. [Aide requete SQL]
    Par viny dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 22/04/2005, 17h00

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