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 :

un champ ayant d'autre champs


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club Avatar de bogsy15
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 53
    Points
    53
    Par défaut un champ ayant d'autre champs
    Bonjour,

    je voudrai savoir s'il est possible pour un client (champ d'une table) d'avoir plusieurs autres champs sans que celui-ci ne soit créé plusieurs fois.

    Je m'explique (avec un exemple ca sera plus simple) :
    J'ai un formulaire qui permet d'afficher la liste des clients. Un client peut avoir différentes dates d'achat.
    Ce que je voudrai c'est que lors de la requête, on affiche le nom du client et ensuite a l'aide d'un lien on puisse afficher toute les dates d'achats de ce client.

    Ca serai comme si un client était une table. Mais à long terme, cela ne va pas etre pratique.

    j'espère m'être fait comprendre.
    Si nan, demandez moi des précisions.
    Si oui, je vous remercie d'avance pour vos réponses.


    ++, bogsy

  2. #2
    Membre habitué Avatar de kivan666
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 177
    Points
    177
    Par défaut
    j'ai du mal à comprendre le problème...
    la solution est évidente : tu met une table achat dans laquelle chaque achat correspond à un client, et dans la page qui liste les achat d'un client tu fais un SELECT sur la table achat WHERE client = le client voulu...

  3. #3
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    C'est mieux de faire 2 tables une pour lister les clients et l'autre pour les achat effectués par ces clients:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    client[id_client,nom]
    achat[id_achat,id_client,date_achat]
    et pour les achats d'un client tu fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select nom,date_achat from achat,client where achat.id_client=client.id_client

  4. #4
    Membre du Club Avatar de bogsy15
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 53
    Points
    53
    Par défaut
    ouai, je suis d'accord. Au fait dans mon cas c'est plutôt un client avec différentes dates de prélèvement, mais bon ca ne change pas grand chose.

    Moi ce que je veux c'est :
    - a partir du formulaire, je créer un nouveau client avec une date de prélèvement
    - tjs a partir du formulaire, je créer un nouveau client, et si celui si existe, je voudrai que ce client ai plusieurs date de prélèvements.
    - a partir d'un autre formulaire, faire afficher le nom du client, avec un lien qui afficher des infos supplémentaire sur ce client.

  5. #5
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Bonjour,

    Pourrait-on voir la table qui se cache derrière le formulaire ?

  6. #6
    Membre du Club Avatar de bogsy15
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 53
    Points
    53
    Par défaut
    bonjour,

    la table qui se cache derrière le formulaire est la suivant :

    client (nom, prenom, date, preleveur)

  7. #7
    Membre du Club Avatar de bogsy15
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 53
    Points
    53
    Par défaut
    disons que dans la table client (voir post précédent), j'ai 2 fois le même client mais avec une date diférente :

    nom | prenom | date | preleveur
    -------------------------------
    dupond | jean | 14-02-2006 | moi
    dupond | jean | 22-06-1999 | lui
    martin | goerges | 04-12-2005 | moi

    Avec un formulaire, je fait afficher la liste des clients dans laquelle n'apparaitra qu'une seule fois le client "dupond jean".
    Est-ce posible ??

  8. #8
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Alors la solution précédemment citée est la bonne, il faudrait créer une nouvelle table achat.

    Maintenant si tu persiste et désires absolument tout mettre dans une seule et même table, tu peux te documenter sur les requêtes INSERT où tu trouveras notament ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
        [INTO] tbl_name
        SET col_name={expr | DEFAULT}, ...
        [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
    Si l'utilisateur existe déjà, un UPDATE est fait avec les valeur spécifiée. Il suffirait donc de placer une concaténation pour les dates et préleveur... mais c'est risqué !

  9. #9
    Membre du Club Avatar de bogsy15
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 53
    Points
    53
    Par défaut
    slt,

    moi je ne veux pas que la date de prélèvement d'un client soit mis à jour, je veux que l'on puisse voir l'historique du client avec notament toutes les dates de ses prèlèvements.

    Sinon pour le problème qui était d'afficher une seule fois le nom d'un client, j'ai trouvé ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DISTINCT nom, prenom FROM client;
    Mais je ne vois pas trop l'intérêt d'avoir 2 tables.

  10. #10
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    C'est une concaténation que je proposais, pas une simple mise à jour. Le but étant d'avoir dans le champ date une liste ressemblant à "date1,date2,date3...". Mais pourrais tu montrer quelques exemples de ce qui est attendu au retour ?

  11. #11
    Membre du Club Avatar de bogsy15
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 53
    Points
    53
    Par défaut
    J'ai ma table client :

    nom | prenom | date | preleveur
    -------------------------------
    dupond | jean | 14-02-2006 | moi
    Alonzo | fernando | 17-10-2000 | elle
    dupond | jean | 22-06-1999 | lui
    martin | georges | 04-12-2005 | moi
    dupond | jean | 01-11-2006 | lui


    Je fait une recherche du client "dupond" par exemple, a l'aide d'un formulaire.

    l'affichage de ma recherche me donne :

    nom | prenom | détails
    ------------------------------
    dupond | jean | bouton_Lien


    Et maintenant quand je clique sur le bouton_lien, j'arrive sur une page avec les infos du clients avec notament toutes ses date de prélévement
    Comme ceci par exemple :

    nom | prenom | date | preleveur
    -------------------------------
    dupond | jean | 22-06-1999 | lui
    dupond | jean | 14-02-2006 | moi
    dupond | jean | 01-11-2006 | lui


    Est-ce que j'ai été plus clair ??

  12. #12
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par Adjanakis
    Mais pourrais tu montrer quelques exemples de ce qui est attendu au retour ?
    Oui c'est plus clair, mais ce tableau est-il bien le résultat attendu ?

  13. #13
    Membre du Club Avatar de bogsy15
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 53
    Points
    53
    Par défaut
    ouai j'aimerai que le résultat ressemble a ca, mais par contre il y aura beaucoup plus de champ que ca.

    par exemple, pour un client :
    date de prélèvement, nom du prélèveur, quels examens a réaliser .....


    mais si il y a une autre facon de faire et qui soit plus pratique, je suis preneur

  14. #14
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par bogsy15
    nom | prenom | date | preleveur
    -------------------------------
    dupond | jean | 22-06-1999 | lui
    dupond | jean | 14-02-2006 | moi
    dupond | jean | 01-11-2006 | lui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom, prenom, date, preleveur 
      FROM client
      WHERE nom="dupond" AND prenom="jean"

  15. #15
    Membre du Club Avatar de bogsy15
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 53
    Points
    53
    Par défaut
    les valeurs issues du formulaires je les passe en paramètres sur la nouvelle page ou sera affiché les infos du clients

  16. #16
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Oui et elles servent à construire la requête SQL non ?

  17. #17
    Membre du Club Avatar de bogsy15
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 53
    Points
    53
    Par défaut
    oui, c'est pour garder la valeur des variables dans un autre page et ainsi pouvoir effectuer correctement les requêtes.

    Sinon quand je demandais s'il y avait une méthodes plus simple pour réaliser mon objectif, je parlais du fait d'avoir 2 tables. Mais je ne vois pas trop comment cela fonctionnerai avec 2 tables.

  18. #18
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Ca ferait comme la réponse de karami. Il n'y aurait plus de redondance dans les clients entrainant un gain de performance.

  19. #19
    Membre du Club Avatar de bogsy15
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 53
    Points
    53
    Par défaut
    Les champs id_client et id_achat doivent etre en auto_incrémentation ??

    Il faut également que je change mon formulaire me permettant d'ajouter un client ? J'y récupère quoi comme données ?
    Une partie du formulaire ira à la table client et l'autre à la table date ?

Discussions similaires

  1. [Requête/SQL]Remplacer champ par valeur autre champ
    Par BORDEAUX4 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/04/2007, 11h05
  2. Réponses: 5
    Dernier message: 23/03/2007, 16h27
  3. Réponses: 7
    Dernier message: 14/12/2006, 14h18
  4. Réponses: 2
    Dernier message: 08/05/2006, 12h22
  5. cherche comment copier le champ vers une autre champ
    Par khier dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 01/07/2005, 12h20

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