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

Requêtes MySQL Discussion :

Plusieurs valeurs pour un même champ


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 144
    Points : 70
    Points
    70
    Par défaut Plusieurs valeurs pour un même champ
    J'ai un petit souci... Je dois référencer un ensemble d'articles dans une BDD MySQL. Ces articles sont classée par profession pour ensuite être affiché dans un site dasn la rubrique correspondante. Le hic, c'est que certains articles sont communs à plusieurs professions... Je voudrais donc savoir si je peux mettre plsieurs valeurs différentes dans le champ profession de la table Articles ou si je dois créer de nouveaux champs pour chaque profession différentes d'un même article... :

    PS : j'ai pas trouvé en consultant la FAQ...

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Points : 159
    Points
    159
    Par défaut
    C'est pas très dur, il faut créer deux tables supplémentaires, voici un exemple:

    table articles
    id (PK)
    titre (VARCHAR)
    contenu (VARCHAR)

    table profession
    id (PK)
    designation (VARCHAR)

    table appartenir
    id_profession (FK)
    id_articles (FK)

    Si ton articles correspond à 3 professions, il y aura 3 lignes dans la table "appartenir", avec 3 fois le même id_articles mais par contre 3 id_profession différents.

    J'espère que ça t'aide.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 144
    Points : 70
    Points
    70
    Par défaut
    OK, merci... Le pire c'est que je l'avais déjà fait pour une autre BDD... Enfin, j'ai ma solution et c'est le principal

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Points : 43
    Points
    43
    Par défaut
    Dès qu'il y a des relations un à plusieurs entre les tables, les tables de liaisons sont indispensables.
    Le MCD (Modèle de Conception de Données) sert à faire apparaître ce genre de relation. La FAQ de Merise à ce sujet est très bien faite.

  5. #5
    Membre régulier Avatar de poissonsoluble
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Points : 73
    Points
    73
    Par défaut
    Bonjour,
    G un peu prés la meme chose dans ma bdd. Je dispose d'un module de recherche suivant un certain critere. Exp: je cherche un resto où je peux trouve 3 services à a fois. Je ne sais pass comment faire ma requete à condition que dans la réponse je n'aurai pas la liste des resto où il y a seulement 1 des services. Je ne veux avoir kom réponse que les resto qui ont à la fois les 3 services!! je ne sais pas si j'ai été comprise!!!

  6. #6
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Bonjour,

    je ne sais pas si j'ai été comprise!!!
    En fait, pas par moi...

    Un petit exemple ne serait pas de trop (ce que tu as dans tes tables, ce que tu souhaites obtenir...)
    un petit effort sur le français serait également apprécié. Merci

    Michel

  7. #7
    Membre régulier Avatar de poissonsoluble
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Points : 73
    Points
    73
    Par défaut
    ok ok!!! Voici mes tables:
    resto: id_resto, nom_resto, ect
    service: id_service, libelle_service
    service_resto: id_service, id_resto (c une table de correspondance)

    exp:
    service
    --------
    id_service libelle_service
    1 anniversaire
    2 repas de groupes
    3 self_service

    resto
    ------
    id_resto nom_resto
    1 la chomette
    2 au coin feu

    service_resto
    id id_service id_resto
    1 1 1
    2 2 1
    3 3 1
    4 3 2


    je voudrai une requete qui cherche les restos tels que les services offert sont: anniversaire, repas de groupes et self_service
    Donc dans ma réponse ca serait : restaurant la chomette seulement.


    G essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id_resto from service_resto where id_service="1" or id_service="2" or id_service="3";
    Sauf qu'ici, la réponse est: "la chomette" et "au coin du feu"!!!!! c pas ce que je veux!!!
    Bon j'espere que mantenant j'ai été comprise car je ne sais plus comment l'expliquer sinon. Merci.

  8. #8
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    C'est plus clair en effet

    La tu recherches les restaurants qui ont un des 3 services
    il faut donc les grouper par restaurants et qu'il y ait 3 fois ce restaurant
    (pense à utiliser un having(count(id_resto))

    Bon courage

    Michel

  9. #9
    Membre régulier Avatar de poissonsoluble
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Cybher
    C'est plus clair en effet

    La tu recherches les restaurants qui ont un des 3 services
    il faut donc les grouper par restaurants et qu'il y ait 3 fois ce restaurant
    (pense à utiliser un having(count(id_resto))

    Bon courage

    Michel
    C'est gentil pour ton aide mais peux tu m'expliquer!!! car je suis pomé!!! Merci

  10. #10
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    je dirais quelque chose dans ce genre.
    j'ai pas de sgbd sous la main je peux pas tester
    *
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select id_resto from service_resto 
    where id_service="1" or id_service="2" or id_service="3" 
    group by id_resto 
    having count(id_resto)=3

  11. #11
    Membre régulier Avatar de poissonsoluble
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Points : 73
    Points
    73
    Par défaut
    Je pourrai pas faire ca, car je ne connais pas d'avance le nombre de service de chaque resto!! Dans l'exemple que j'ai donné, j'ai mis 3services pour un restaurant mais ca peut etre plus comme moins!!

  12. #12
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    et il ne t'est pas possible de les compter?

  13. #13
    Membre régulier Avatar de poissonsoluble
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Points : 73
    Points
    73
    Par défaut
    C'est peut etre possible mais ca serai trop le bordel!! Donc si t'as une autre solution je ne dirai pas non!! Merci

  14. #14
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Je ne vois pas comment faire autrement. peut étre que d'autres personnes seront plus inspirées que moi

    mais si tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id_service="1" or id_service="2" or id_service="3"
    , je ne vois pas pourquoi tu ne peux pas compter ton nombre de services.


    Bon courage,

    Michel

  15. #15
    Membre régulier Avatar de poissonsoluble
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Points : 73
    Points
    73
    Par défaut
    J'ai un autre souci!! Au fait, pour mon module de recherche, je dispose d'un formulaire ou il ya 2listes déroulantes une pour le genre et une pour la catégorie du restaurant et j'ai des cases à cocher pour les services (g 8 services différents à choisir) et pour les options (18 cases différentes). Donc suivant les cases cochées, je dois cherché le restaurant qui convient.
    Mon probleme est que je ne sais pas comment faire pour vérifier les critéres qui ont été choisi par l'internaute pour effectuer ma requete!!!
    Besoin d'aide!!

  16. #16
    Membre régulier Avatar de poissonsoluble
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Points : 73
    Points
    73
    Par défaut
    la question est: est ce que je dois énumérer toutes les possibilités qu'il peu y avoir et suivant le cas je fais une requete (ca c'est la solution longue et barbare) donc je demande s'il ya une autre solution? Merci

  17. #17
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Je pense que tu devrais construire ta requete dynamiquement en fonction de tes criteres sélectionnés
    tout depend du langage que tu utilises apres

  18. #18
    Membre régulier Avatar de poissonsoluble
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Points : 73
    Points
    73
    Par défaut
    j'utilise du PHP et MySQL!

  19. #19
    Membre régulier Avatar de poissonsoluble
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Points : 73
    Points
    73
    Par défaut
    Donc, si j'ai bien compris, la soution est comme j'ai dit au début!! (trop longue et plein de test imbriqués, je dois énumérer toutes les possibilités!!!)

  20. #20
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Tu peux essayer de faire une requete dynamique

    quelquechose de ce genre
    requete = select * from table where 1=1
    si (case1 cochée) alors requete = requete + and condition1
    si (case2 cochée) alors requete = requete + and condition2
    ....

    (+ opérateur de concaténation)


    et oui, cela va etre assez long....

Discussions similaires

  1. Plusieurs valeurs dans un même champ
    Par fidecourt dans le forum Outils
    Réponses: 2
    Dernier message: 30/01/2013, 00h03
  2. Réponses: 2
    Dernier message: 21/08/2008, 12h46
  3. [MySQL] insérer plusieurs valeurs pour le même champ
    Par fAdoua123 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/03/2008, 13h41
  4. Plusieurs valeurs pour une même colonne
    Par maxlegrand dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/10/2007, 13h32
  5. [MySQL] Plusieurs valeur pour un meme champs
    Par poissonsoluble dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/06/2006, 15h34

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