SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table
Répondre à la discussion
Affichage des résultats 1 à 22 sur 22

SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table



  1. #1
    noam

    SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table


    ------

    Bonjour a tous,
    j’essaye d'afficher dans une table html les résultats combiner entre 4 tables, je n'ai pas réussi a trouvé un tuto compréhensible pour le faire.
    c'est pour cela que je vient a votre aide pour me guider a réussir cette opération sql.
    Je me connecte en PDO a ma base de données.

    J'ai 4 tables
    1. products -> ID auto increment, product_name, product_number
    2. categories -> ID auto increment, categorie_name, categorie_number
    3. stock_input -> ID auto increment, stock_in_date, product_number, categorie_number, amount_in
    4. stock_output -> ID auto increment, stock_out_date, product_number, amount_out

    la 1ere table contient le nom du produits et son numéro de série
    la 2eme table contient le nom de la catégorie et son numéro
    la 3eme table contient le stock entrant, je garde juste les numéros qui correspondent au table 1 et 2
    la 4eme table contient le stock sortant, je garde juste les numéros qui correspondent au table 1 et 2

    Le produit est choisi d'une liste déroulante de la table products depuis un form html (code existant de ma liste déroulante qui marche).
    Je cherche a afficher dans une table html, le nom du produit, son numéro de série, son numéro de catégorie, le nombre restant en stock,
    pour cela il faudra faire le calcul de la somme (stock_input.amount_in - stock_output.amount_out).

    J’espère que je suis compréhensible et de pouvoir m'enrichir

    -----

  2. #2
    noam

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Rebonjour,
    J'ai essayé ce code la syntaxe ne doit pas être correcte,comment dois-je corriger mon code?

    Code:
    $sth = $pdo->query("SELECT products.product_number, products.product_name, 
      categories.categories_name, categories.categories_number, 
      stock_input.stock_in_date, stock_input.product_number, stock_input.categorie_number, SUM(stock_input.amount_in) AS totalIN, 
      stock_output.stock_out_date, stock_output.product_number, SUM(stock_output.amount_out) AS totalOUT
      FROM products
      INNER JOIN categories ON categories.categories_number = stock_input.categorie_number 
      INNER JOIN stock_input ON stock_input.product_number = products.product_number
      INNER JOIN stock_output ON stock_output.product_name = products.product_number
      WHERE stock_input.product_number = $customer_id AND stock_output.product_number = $customer_id");

  3. #3
    Médiat

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Bonjour,

    Vous faites des sommes, il vous faut donc ajouter un GROUP BY

    Vos JOIN sont bizarres (un number = un name) et n'importe quoi (le premier par exemple)

    Il est inutile SELECT stock_input.product_number et products.product_number puisqu'ils sont égaux !
    Dernière modification par Médiat ; 30/03/2020 à 11h13.
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  4. #4
    Médiat

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    J'ai envie de dire que vos tables, c'est n'importe quoi ; vous devriez nous communiquer le fonctionnel, sinon, je ne vois pas comment vous aider
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  5. A voir en vidéo sur Futura
  6. #5
    noam

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    J'ai 4 table , j’insère mes données dans chaque table par des form html, cette partie est fonctionnel je remplie bien mes tables.
    Je les ai décris en #1
    --------------------------------------------------------------------------
    Table products :
    - ID auto increment
    - product_name
    - product_number

    Table categories:
    - ID auto increment
    - categories_name
    - categories_number

    Table stock_input :
    - ID auto increment
    - stock_in_date
    - product_number
    - categorie_number
    - supplier_ID
    - amount_in

    Table stock_output
    - ID auto increment
    - stock_out_date
    - product_number
    - project_name (je garde le numéro et pas le nom)
    - amount_out

    Les données inséré dans la table stock_input et stock_output sont les ID des tables products et categories, puis la quantité du produit entrant ou sortant

    pour la partie insertion des données:
    j’insère depuis un html form dans la table stock_input
    Code:
    la 1ere cologne j'ai mis ID en AI et la 2eme la date automatiquement inserer current_timestamp()
    
    $sql = "INSERT INTO `stock_input` (`product_number`, `categorie_number`, `supplier_ID`, `amount_in`) VALUES (:product_number, :categorie_number, :supplier_ID, :amount_in)";
        $stmt = $pdo->prepare($sql);      
        $stmt->execute(['product_number' => $prodnumber, 'categorie_number' => $categorienumber, 'supplier_ID' => $suppliernumber, 'amount_in' => $amount]);
        $pdo->commit();
    j’insère depuis un html form dans la table stock_output:
    Code:
    la 1ere cologne j'ai mis ID en AI et la 2eme la date automatiquement inserer current_timestamp()
    je vient de remarquer que j'ai mis une cologone project_name c'est le numéro qui est insere
    
    $sql = "INSERT INTO `stock_output` (`product_number`, `project_name`, `amount_out`) VALUES (:product_number, :project_name, :amount_out)";
    	   $stmt = $pdo->prepare($sql);
    	   $stmt->execute(['product_number' => $prodnumber, 'project_name' => $projectnumber, 'amount_out' => $amount]);
    	   $pdo->commit();
    pour la partie récupération des données:
    J'ai une liste déroulante d'un form html qui cherche le products_number dans la table products
    je récupère le numéro dans une variable, j'utilise ce code.
    Code:
    $sth = $pdo->prepare("SELECT product_name, product_number FROM products ORDER BY product_name ASC");
        $sth->execute();
        $results = $sth->fetchAll(PDO::FETCH_ASSOC);
        echo "<label for='customer_id'><select name='customer_id' id='customer_id_select' onChange='outputValue(this)'>";
    	echo "<option>בחר מוצר:</option>";
        foreach($results as $row) 
    	{
    	  echo "<option value='" . $row['product_number'] . "'>" . $row['product_name'] . "</option>";
        }
    	echo "</select></label>";
        echo "<input type='hidden' id='output' name='output' readonly/>";
    	?>
    <script>
    function outputValue(item)
    {
     document.getElementById('output').value = item.value;
     if(document.getElementById('output').value >= 0){}
     else{(document.getElementById('output').value = "NULL");}
    }
    	
    function outputValue1(item)
    {
     document.getElementById('output1').value = item.value;
     if(document.getElementById('output1').value >= 0){}
     else{(document.getElementById('output1').value = "NULL");}
    }
    </script>
    Ce que j'ai envie de faire, d'afficher dans une table HTML, après avoir choisi le produits voulue de la liste déroulante,
    le résultat des 2 listes stock_input et stock_output

    nom du produits : ------> products_name
    numéro de série: -------> products_number
    nom de ça catégorie :--> categories_name
    numéro de sa categories: categories_number
    le total restant en stock : (SUM(stock_input.amount.in) - SUM(stock_output.amount.out))
    Dernière modification par noam ; 30/03/2020 à 12h40.

  7. #6
    Fustigator

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Il y a un truc a première vue absurde sur le modèle : la relation catégorie-produit est portée sur les tables stock_input.
    A priori, ca n'a ni queue ni tête, ou alors la catégorie n'est pas réellement liée au produit.

    Par ailleurs, même si c'est un autre sujet, c'est quoi ce truc de mélanger de l'accès données avec de la présentation ?
    C'est le code "moderne" ?

  8. #7
    umfred

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Citation Envoyé par noam Voir le message
    le total restant en stock : (SUM(stock_input.amount.in) - SUM(stock_output.amount.out))
    Pourquoi tu fais la somme ici ??? tu veux avoir stock_input.amount.in - stock_output.amount.out de chaque produit, inutile d'utiliser la fonction SUM qui fait la somme de la colonne indiquée

  9. #8
    Fustigator

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Citation Envoyé par umfred Voir le message
    Pourquoi tu fais la somme ici ??? tu veux avoir stock_input.amount.in - stock_output.amount.out de chaque produit, inutile d'utiliser la fonction SUM qui fait la somme de la colonne indiquée
    De toute manière, avant de s'occuper de quoi mettre dans le Sql, il faudrait revoir le modèle de données qui semble relever, à première vue, de la logique shadok.

  10. #9
    Médiat

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Citation Envoyé par noam Voir le message
    J'ai 4 table
    Ce n'est pas cela que j'appelle "fonctionnel".

    Est-ce que les tables sont imposées ou de votre décision ?
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  11. #10
    noam

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Citation Envoyé par Fustigator Voir le message
    Il y a un truc a première vue absurde sur le modèle : la relation catégorie-produit est portée sur les tables stock_input.
    A priori, ca n'a ni queue ni tête, ou alors la catégorie n'est pas réellement liée au produit.

    Par ailleurs, même si c'est un autre sujet, c'est quoi ce truc de mélanger de l'accès données avec de la présentation ?
    C'est le code "moderne" ?
    Je suis toujours prés a apprendre et a faire des changements pour être dans les normes du code.

    Citation Envoyé par umfred Voir le message
    Pourquoi tu fais la somme ici ??? tu veux avoir stock_input.amount.in - stock_output.amount.out de chaque produit, inutile d'utiliser la fonction SUM qui fait la somme de la colonne indiquée
    ces tables peuvent contenir plusieurs fois le même produit selon leur arrivé au stock, pour cela que je suis aller faire un SUM sur la cologne pour les lignes contents le même numéro de produit.

    Citation Envoyé par Médiat Voir le message
    Ce n'est pas cela que j'appelle "fonctionnel".

    Est-ce que les tables sont imposées ou de votre décision ?
    les tables sont de ma décision, quel est la juste façon de faire ma gestion de stock?

  12. #11
    Fustigator

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Merci de répondre aux questions posées; notamment sur le fonctionnel de la relation categorie-produit.

    Qu'est ce qui justifie que cette relation soit portée par une table de mouvement ?

    Dit autrement, qu'est ce qu'une "catégorie" ici ?

  13. #12
    umfred

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Citation Envoyé par noam Voir le message
    ces tables peuvent contenir plusieurs fois le même produit selon leur arrivé au stock, pour cela que je suis aller faire un SUM sur la cologne pour les lignes contents le même numéro de produit.
    ok donc comme dit plus haut => ajoute un GROUP BY

  14. #13
    Médiat

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Non, vous repartez à 0

    Par exemple, mais sans fonctionnel, c'est sans doute pas conforme aux besoins :

    Table products :
    - ID auto increment
    - product_name
    - product_number (
    ?
    )
    -ID_category


    Table categories:
    - ID auto increment
    - categories_name
    - categories_number (
    ?
    )

    Table stock_input :
    - ID auto increment
    - stock_in_date
    - ID_product
    - supplier_ID (
    où est la table des suppliers ?
    )
    - amount_in

    Table stock_output
    - ID auto increment
    - stock_out_date
    - ID_product
    - project_name (je garde le numéro et pas le nom) (
    où est la table des projets ?
    )
    - amount_out
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  15. #14
    noam

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Citation Envoyé par Fustigator Voir le message
    Merci de répondre aux questions posées; notamment sur le fonctionnel de la relation categorie-produit.

    Qu'est ce qui justifie que cette relation soit portée par une table de mouvement ?

    Dit autrement, qu'est ce qu'une "catégorie" ici ?
    La table categorie-produit signifie un classement, dans cette table il y a le nom de la catégorie puis son numéro.
    Il pourrait avoir plusieurs produits avec la même catégorie.
    Je fais le classement dans la table de stock_input, dès qu'un produit entre dans le stock je le classe en même temps, en insérant son numéro de classement.

  16. #15
    noam

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Citation Envoyé par Médiat Voir le message
    Non, vous repartez à 0
    Je suis près a repartir a zéro, j'aimerais savoir juste comment le faire juste.

    La table supplier est existante pour l'instant je ne l'ai pas besoin, il contient un ID auto increment puis le nom du fournisseur
    La table projets est aussi existant il contient ID auto increment, le nom de l'endroit et le nom du projects
    Ces 2 tables pour l'instant sont moins importantent pour ce que j'ai envie de faire
    Dernière modification par noam ; 30/03/2020 à 13h33.

  17. #16
    Fustigator

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Citation Envoyé par noam Voir le message
    La table categorie-produit signifie un classement, dans cette table il y a le nom de la catégorie puis son numéro.
    Il pourrait avoir plusieurs produits avec la même catégorie.
    Vous parlez de table La table categorie-produit, alors qu'elle n'existe pas.

    Accessoirement, dans la mesure où un produit n'appartient qu'à une seule catégorie, il n'est pas nécessaire de matérialiser par une table la relation produit-catégorie, il suffit de porter l'id de catgégorie dans la ligne produit.

    Je fais le classement dans la table de stock_input, dès qu'un produit entre dans le stock je le classe en même temps, en insérant son numéro de classement.
    C'est bien ce que je pensais et c'est parfaitement illogique comme façon de faire.
    Dernière modification par Fustigator ; 30/03/2020 à 13h38.

  18. #17
    noam

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Citation Envoyé par Fustigator Voir le message
    Vous parlez de table La table categorie-produit, alors qu'elle n'existe pas.
    elle existe
    categories_table :
    ID auto increment
    categories_name
    categories_number

    Accessoirement, dans la mesure où un produit n'appartient qu'à une seule catégorie, il n'est pas nécessaire de matérialiser par une table la relation produit-catégorie, il suffit de porter l'id de catgégorie dans la ligne produit.

    C'est bien ce que je pensais et c'est parfaitement illogique comme façon de faire.
    C'est de rajouter une colonne catégorie dans ma table produits et d'effacer la table categories_table.
    Je le ferais.

    Comment procéder correctement l'affichage du nombre restant dans le stock d'un produit choisi d'une liste déroulante ?

  19. #18
    Fustigator

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Citation Envoyé par noam Voir le message
    elle existe
    categories_table :
    ID auto increment
    categories_name
    categories_number


    relire mon message.

  20. #19
    Ikhar84
    Animateur Informatique

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    On ne parles pas de tables lors de la conception d'une base de données, on parle d'entités (ce seront plus tard les tables) métier, ou du dictionnaire des données (l'ensemble des données que l'application va manipuler/utiliser).

    C'est l'objet (l'objectif) de la création de ton application. Et ce sont les objets (au sens poo ou pas) de ton métier (gestion de stock de produits).

    Il te faut d'abord identifier toutes tes entités, puis y ventiler chacune des données (propriétés) de ton dictionnaire des données.

    Pas de liens entre les entités, dans un premier temps.

    Un fois tes entités et leur propriétés définies, tu peux t'attaquer aux liens (relations) entre les entités.
    Un produit appartient à une catégorie, par exemple.

    Ensuite, tu définis les cardinalités (ou décorations).
    Un produit appartient à une et une seule catégorie: 1,1.
    Un produit appartient à une ou plusieurs catégories: 1,n

    En gros, le premier cas donnera un idCategorie dans la table produit, le deuxième cas donnera naissance à une table d'association (comme un catégorie pour un seul produit n'a pas de sens).

    Regardes la méthode mérise pour aller plus loin.

    Ceci fait, tu peux vérifier la cohérence de tes données en cherchant à te conformer aux formes normales (1 à 3 suffira).

    Ceci fait, tu auras une base cohérente et fiable, pas de redondance des données, et des requêtes sql simplifiées (et logiques).
    Dernière modification par Ikhar84 ; 30/03/2020 à 18h25.
    J'ai glissé Chef !

  21. #20
    Médiat

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Citation Envoyé par Ikhar84 Voir le message
    Regardes la méthode mérise pour aller plus loin.
    Si noam est né dans les années 50 pourquoi pas ….

    Pour ceux qui ne connaissent pas MERISE : Méthode Eprouvée pour Retarder Indéfiniment la Sortie des Etudes

    Il y a bien d'autres solutions, comme l'algèbre relationnelle par exemple
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  22. #21
    Ikhar84
    Animateur Informatique

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Je n'aimes pas, mais pas du tout mérise, mais c'est vrai que ça me semble la solution la plus simple pour aider un débutant à designer sa base, c'est ce qui est demandé dans les référentiels... à mon grand dam.
    J'ai glissé Chef !

  23. #22
    Fustigator

    Re : SQL: cherche aide d'afficher résultat entre 4 tables dans HTML table

    Citation Envoyé par Ikhar84 Voir le message
    Je n'aimes pas, mais pas du tout mérise, mais c'est vrai que ça me semble la solution la plus simple
    Ben ici on a un problème basique de MCD et en effet Merise sur ces cas là là fournit une approche assez intuitive.

Discussions similaires

  1. HTML code pour afficher un petit écran dans le même onglet
    Par enzyox dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 14/01/2013, 11h21
  2. Cherche conseils SVP pour afficher messages dans Windows Mail
    Par roro123 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 16/02/2010, 17h13
  3. Afficher le résultat d'un calcul dans un formulaire web
    Par invite234d9cdb dans le forum Internet - Réseau - Sécurité générale
    Réponses: 1
    Dernier message: 20/08/2008, 10h38
  4. Ne pas afficher les mails au format HTML avec thunderbird
    Par keul dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 31/10/2005, 10h12
  5. Afficher valeur HTML Java
    Par inviteeab4d8e2 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 8
    Dernier message: 01/03/2005, 16h38