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 :

[SQL] Probléme de tables


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 6
    Par défaut [SQL] Probléme de tables
    Bonjour à tous je suis un débutant en langage SQL et lors de la création de mes tables je me trouve confronté à un problème.
    Voici les tables que j'ai crée :


    Mon but est de séléctionner tout les disques dur, j'ai donc essaye de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select distinct products.label from products,subcat where subcat.sid=products.sid AND products.sid=2 AND subcat.cid=1
    Mais le AND subcat.cid dans la clause where n'a aucun effet je me retrouve avec les disques durs dans la catégorie pieces et periph.

    Mes tables ne sont pas bonnes ? Ma requete incorrecte ? Je suis un peu perdu.
    Merci pour votre aide

  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
    Par défaut
    Tes tables sont mal conçues : tes disques durs ayant un sid de 2 on ne sait pas si ce sont des HDD ou des moniteurs...

    Deux solutions :
    • Tu ajoutes le cid dans la table Product
      Tu rends le sid de la table SUBCAT unique

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 6
    Par défaut
    Merci beaucoup pour ta réponse je vais essayer de rajouter un champ cid dans la table products merci encore !

  4. #4
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 273
    Par défaut
    je dirais que c'est la table subcat qui est mal faite.
    elle n'a aucun identifiant (clé primaire) permettant de désigner chaque "sous-catégorie"

  5. #5
    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
    Par défaut
    Citation Envoyé par marsupix
    je dirais que c'est la table subcat qui est mal faite.
    elle n'a aucun identifiant (clé primaire) permettant de désigner chaque "sous-catégorie"
    Pas d'accord : la clé primaire est (sid, cid).

  6. #6
    Membre actif Avatar de blaiso
    Profil pro
    Banquier
    Inscrit en
    Décembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Banquier

    Informations forums :
    Inscription : Décembre 2005
    Messages : 97
    Par défaut
    Citation Envoyé par Médiat
    Citation Envoyé par marsupix
    je dirais que c'est la table subcat qui est mal faite.
    elle n'a aucun identifiant (clé primaire) permettant de désigner chaque "sous-catégorie"
    Pas d'accord : la clé primaire est (sid, cid).
    je suis d'accord avec marsupix, la table SUBCAT n'a pas de clé primaire.

    la structure des tables devraient normalement être:
    CAT(cid, label)
    PRODUCTS(pid, sid, label)
    SUBCAT(sid, cid, label)
    dans ce cas, la table PRODUCTS est fille de la table SUBCAT. donc PRODUCTS prend la clé primaire de SUBCAT.
    la table SUBCAT est fille de la table CAT. donc SUBCAT prend la clé primaire de CAT.

    la requete devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select distinct products.label from products,subcat where subcat.sid=products.sid AND  subcat.cid= "clé primaire de HDD"
    Or dans ta table, le champ sid , qui doit etre celui de ta clé primaire a des valeurs repetés!

    elle ne pourra jamais marcher ta requete.

    Citation Envoyé par Médiat
    Pas d'accord : la clé primaire est (sid, cid).
    désolé Médiat, la clé primaire est sid !, donc, cette table n'a pas de clé primaire dans sa structure actuelle.

  7. #7
    Membre actif Avatar de blaiso
    Profil pro
    Banquier
    Inscrit en
    Décembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Banquier

    Informations forums :
    Inscription : Décembre 2005
    Messages : 97
    Par défaut
    autant pour moi...
    la requete est plustot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select distinct products.label from products,subcat where subcat.sid=products.sid AND  subcat.sid= "clé primaire de HDD"

  8. #8
    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
    Par défaut
    Citation Envoyé par blaiso
    désolé Médiat, la clé primaire est sid !, donc, cette table n'a pas de clé primaire dans sa structure actuelle.
    Désolé blaiso, mais il semble que tu n'aies jamais entendu parler de lien identifiant et de clé composite.

    La table telle qu'elle est proposée a une clé primaire composite (cid, sid) il est quand même facile de voir que tous les couples sont uniques ; que ce ne soit pas la meilleure solution est une autre question (c'est pour cela que je proposais deux solutions dans ma première réponse), qui ne pourrait se résoudre qu'avec une complète connaissance des besoins fonctionnels.

  9. #9
    Membre actif Avatar de blaiso
    Profil pro
    Banquier
    Inscrit en
    Décembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Banquier

    Informations forums :
    Inscription : Décembre 2005
    Messages : 97
    Par défaut
    Citation Envoyé par Médiat
    Désolé blaiso, mais il semble que tu n'aies jamais entendu parler de lien identifiant et de clé composite.
    Rassure toi Médiat, j'en ai déjà entendu parlé.


    Citation Envoyé par Médiat
    La table telle qu'elle est proposée a une clé primaire composite (cid, sid) il est quand même facile de voir que tous les couples sont uniques .
    je crains que ce ne soit la meilleure façon de déceler une clé primaire d'une table. Je crois savoir que c'est dans la conception que cela se passe, et non en observant l'unicité des couples de valeurs!

    Citation Envoyé par Médiat
    que ce ne soit pas la meilleure solution est une autre question.
    je suis entièrement d'accord.
    Citation Envoyé par Médiat
    (c'est pour cela que je proposais deux solutions dans ma première réponse), qui ne pourrait se résoudre qu'avec une complète connaissance des besoins fonctionnels.
    C'est un début de solution que j'ai proposé dans le schéma relationnel evoqué dans le post precedent.

    Au bout du compte, nous sommes d'accord que les tables sont mal faites, donc sa requete ne peut pas lui donner les résultats escomptés.

Discussions similaires

  1. [SQL] Problème SHOW TABLES
    Par zouetchou dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/11/2007, 10h42
  2. [SQL] Problème avec script de pagination et requête sql sur deux tables
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h06
  3. [SQL] Problème requête sur 2 tables
    Par temperature dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 20/04/2006, 12h05
  4. problème de requête SQL sur 3 tables pour un while
    Par carmen256 dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/04/2006, 16h55
  5. Réponses: 6
    Dernier message: 31/03/2006, 17h05

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