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

PHP & Base de données Discussion :

Relation entre 3 table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 84
    Par défaut Relation entre 3 table
    Bonjours,

    voila j ai créé 3 table
    1) Commande (id_commande, date_commande)
    2) ligne_commande(id_lc, id_produit, id_commande, cltname)
    3) produits(id_produit, nom_produit, prix_produit, image_produit,)

    et je voudrais une requete d affichage qui me donne la somme de tous le
    produits acheté par le cltname

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    -- phpMyAdmin SQL Dump
    -- version 3.2.0.1
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Mar 15 Décembre 2009 à 12:47
    -- Version du serveur: 5.1.37
    -- Version de PHP: 5.3.0
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
    --
    -- Base de données: `alm`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `commande`
    --
     
    CREATE TABLE IF NOT EXISTS `commande` (
      `id_commande` int(5) NOT NULL AUTO_INCREMENT,
      `date_commande` date NOT NULL,
      PRIMARY KEY (`id_commande`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;
     
    --
    -- Contenu de la table `commande`
    --
     
    INSERT INTO `commande` (`id_commande`, `date_commande`) VALUES
    (15, '2009-12-15'),
    (14, '2009-12-15');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `ligne_commande`
    --
     
    CREATE TABLE IF NOT EXISTS `ligne_commande` (
      `id_lc` int(5) NOT NULL AUTO_INCREMENT,
      `id_produit` int(5) NOT NULL,
      `id_commande` int(5) NOT NULL,
      `cltname` varchar(30) NOT NULL,
      PRIMARY KEY (`id_lc`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=44 ;
     
    --
    -- Contenu de la table `ligne_commande`
    --
     
    INSERT INTO `ligne_commande` (`id_lc`, `id_produit`, `id_commande`, `cltname`) VALUES
    (40, 4, 14, 'Ahmed'),
    (39, 3, 14, 'Ahmed'),
    (38, 2, 14, 'Ahmed'),
    (37, 1, 14, 'Ahmed'),
    (41, 1, 15, 'Dyaa'),
    (42, 3, 15, 'Dyaa'),
    (43, 4, 15, 'Dyaa');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `produits`
    --
     
    CREATE TABLE IF NOT EXISTS `produits` (
      `id_produit` int(5) NOT NULL AUTO_INCREMENT,
      `nom_produit` varchar(255) NOT NULL,
      `prix_produit` float NOT NULL,
      `image_produit` varchar(255) NOT NULL,
      PRIMARY KEY (`id_produit`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
     
    --
    -- Contenu de la table `produits`
    --
     
    INSERT INTO `produits` (`id_produit`, `nom_produit`, `prix_produit`, `image_produit`) VALUES
    (1, 'A', 10, 'boot2_s.jpg'),
    (2, 'B', 20, 'boot_s.jpg'),
    (3, 'C', 30, 'wool_s.jpg'),
    (4, 'D', 40, 'samta_s.jpg');
    http://csradio.sitemaroc.com/Checked.zip (faite copier collé du lient merci)

    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Et tu as essayé une requête avant de demander une solution toute faite ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 84
    Par défaut Relation entre 3 table
    Bonjours

    Ben oui j ai essayé et j ai pas trouvé

    NB: des repense comme çà c a évité MERCI!!!

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    NB: des repense comme çà c a évité MERCI!!!
    Et bien puisque tu aimes les critiques je ne vais pas me gêner.

    Ton besoin :
    la somme de tous les produits achetés par le cltname
    Tes tables :
    1) Commande (id_commande, date_commande)
    2) ligne_commande(id_lc, id_produit, id_commande, cltname)
    3) produits(id_produit, nom_produit, prix_produit, image_produit,)
    Elles sont où les quantités de produits achetés ?

    Parlons un peu de la structure de la table ligne_commande...
    D'après le jeu de données que tu fournis, il semble que cltname soit le nom du client. Du coup, il est répété sur toutes les lignes d'une commande.
    Le client ne serait-il pas plutôt à associer à la commande ?
    Et n'as-tu pas une table des clients ? Auquel cas il faudrait l'id_client plutôt que son nom en référence dans la commande.

    Ben oui j ai essayé et j ai pas trouvé
    Tu as essayé quoi ?

    En supposant que l'absence de quantité soit un oubli, c'est un problème très classique alors tu n'as pas dû chercher beaucoup !

    Donc je modifie tes tables :
    Client (id_client, nom_client...)
    Commande (id_commande, id_client, date_commande, montant_ht, montant_tva)
    produits (id_produit, nom_produit, prix_produit, image_produit,)
    ligne_commande (id_commande, id_lc, id_produit, quantite, prix_ht, taux_tva)

    Nombre de produits commandés par client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT cl.nom_client, p.nom_produit, SUM(lc.quantite) AS nb_produits_achetes
    FROM ligne_commande AS lc
    INNER JOIN produits AS p ON lc.id_produit = p.id_produit
    INNER JOIN Commande AS c ON lc.id_commande = c.id_commande
      INNER JOIN Client AS cl ON c.id_client = cl.id_client
    GROUP BY cl.nom_client, p.nom_produit
    ORDER BY cl.nom_client, p.nom_produit
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 84
    Par défaut Relation entre 3 table
    Bonjours,

    ben la quantité je l ai pas mit c pas que je l ai oublié pars que j utilise une
    autre méthode c l id de commande chaque commande a son id si je prend 3
    article j ai l id 15(exemple) sur chaque article alors la requête dont j ai besoin
    aura l aire a peux prés comme ca

    select som() where id_commande=variabel dans le foormulaire qui aura la
    mémé valeur

    j espère que j ai été clair Merci!!!

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Tu veux dire que chaque article ne peut être acheté que par quantité de 1 ?
    Qu'est-ce que tu vends de si rare ? Des oeuvres d'arts uniques ?

    Dans ce cas, ce n'est pas une somme d'identifiants qu'il te faut faire (ça n'a aucun sens d'additionner des identifiants !) mais un comptage des lignes de commande par client.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 84
    Par défaut Relation entre 3 table
    Bonjours,

    ben voila en fin de compte j ai réussie a mon sortir j ai utulisé que de table
    et voila la requête qui ma sorti du pétrin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM produits WHERE produits.id_produit IN
    (SELECT id_produit FROM ligne_commande WHERE id_commande = $last_id"

    Merci tout le monde

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

Discussions similaires

  1. Relation entre les tables
    Par mzt.insat dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/11/2005, 08h17
  2. [XSD] Relation entre deux tables
    Par fd59 dans le forum Valider
    Réponses: 2
    Dernier message: 09/09/2005, 23h33
  3. Relation entre les tables
    Par adelyx dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/04/2005, 23h06
  4. Relation entre deux tables
    Par manel007 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/03/2005, 16h54
  5. [Relations] afficher les relations entre 2 tables
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 14/01/2004, 17h07

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