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 :

Liaison entre table


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 161
    Par défaut Liaison entre table
    Bonjour, j'ai mis en place glpi dans ma boite et je dois sortir des stats sur la consommation en cartouches avec le prix moyen.
    J'arrive à lister mes consommables usagés et à les quantifier avec la requête suivante :
    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
     
    SELECT 		glpi_printers.name as cart_print,
    			glpi_cartridges_type.ref as cart_ref,
    			glpi_cartridges_type.name as cart_name,
    			count(*) as cart_qte		
    FROM 		glpi_cartridges_type, 
    			glpi_dropdown_cartridge_type,
    			glpi_cartridges,
    			glpi_plugin_order_references,
    			glpi_plugin_order_references_manufacturers,
    			glpi_printers
    WHERE 		glpi_cartridges.FK_glpi_cartridges_type = glpi_cartridges_type.ID AND
    			glpi_dropdown_cartridge_type.ID = glpi_cartridges_type.type AND
    			glpi_cartridges.FK_glpi_printers = glpi_printers.ID AND
    			glpi_cartridges.date_out IS NOT NULL
    GROUP BY	glpi_cartridges_type.name
    ORDER BY	glpi_cartridges_type.name
    Il y a maintenant 2 autres tables que j'utilise, l'une contient la liste des références c'est a dire de mes cartouches et l'autre la liste avec les tarifs par fournisseurs
    ex:
    table1 : id, nom --> glpi_plugin_order_references
    1, toner noir lexma 7xx
    2, toner cyan lexma èxx
    table2 : id, table1_id, frns, prix --> glpi_plugin_order_references_manufacturers
    1, 1, frnss1, 27
    2, 1, frnss2, 30
    3, 1, frnss4, 28
    4, 2, frnss2, 36
    5, 2, frnss3, 39
    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
     
    SELECT 		glpi_printers.name as cart_print,
    			glpi_cartridges_type.ref as cart_ref,
    			glpi_cartridges_type.name as cart_name,
    			count(*) as cart_qte		
    FROM 		glpi_cartridges_type, 
    			glpi_dropdown_cartridge_type,
    			glpi_cartridges,
    			glpi_plugin_order_references,
    			glpi_plugin_order_references_manufacturers,
    			glpi_printers
    WHERE 		glpi_cartridges.FK_glpi_cartridges_type = glpi_cartridges_type.ID AND
    			glpi_dropdown_cartridge_type.ID = glpi_cartridges_type.type AND
    			glpi_cartridges.FK_glpi_printers = glpi_printers.ID AND
    --	ligne1	glpi_plugin_order_references.name = glpi_cartridges_type.name AND
    --	ligne2	glpi_plugin_order_references_manufacturers.FK_reference = glpi_plugin_order_references.ID AND
    			glpi_cartridges.date_out IS NOT NULL
    GROUP BY	glpi_cartridges_type.name
    ORDER BY	glpi_cartridges_type.name
    Si je met le code en entier donc en décommentant la ligne 1 et la ligne 2 j'ai 2 ligne de résultat en moins et le calcul des quantités est érroné

    Si je décommente juste la ligne 1 j'ai bien le bon nombre de ligne dans mon résultat mais les qté sont pas bonne.

    Si je décommente juste la ligne 2 j'ai bien le bon nombre de ligne dans mon résultat mais les qté sont aussi pas bonne.

    Merci de votre aide car il ne me reste plus beaucoup de cheveux ;-)

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    es tu sous MySQL ? Si oui tu peux lire ceci. Ensuite, tu y verras peut être plus clair qui sait

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Par défaut
    avec seulement * comment savoir quoi compter ca peu venir de n'importe quelle table.

    essai avec tes ID de glpi_cartridges_type car tu les regroupe et la ca comptera les données venant de glpi_cartridges_type (ps on peut mettre * au lieu de ID mais bon)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    count(glpi_cartridges_type.ID) as cart_qte

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 161
    Par défaut
    Bonjour, désolé pour ma réponse tardive, je dois vraiement être une quiche car je n'y arrive toujours pas, je dois avoir un problème de liaison car je récupère bien les bonne ligne et les bon prix moyen fournisseurs mais les quantités sont extravagante.

    Citation Envoyé par Helfima Voir le message
    avec seulement * comment savoir quoi compter ca peu venir de n'importe quelle table.

    essai avec tes ID de glpi_cartridges_type car tu les regroupe et la ca comptera les données venant de glpi_cartridges_type (ps on peut mettre * au lieu de ID mais bon)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    count(glpi_cartridges_type.ID) as cart_qte

    Voici mes 2 requêtes SQL qui fonctionne bien chacune de leur coté.
    - Liste des prix moyen fournisseurs OK mais toutes mes lignes de consommables de ma base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT      glpi_plugin_order_references.name as cart_name,
                ROUND(AVG(glpi_plugin_order_references_manufacturers.price_taxfree),2) AS cart_prix
    FROM        glpi_plugin_order_references,
                glpi_plugin_order_references_manufacturers
    WHERE       glpi_plugin_order_references_manufacturers.FK_reference = glpi_plugin_order_references.ID
    GROUP BY    glpi_plugin_order_references_manufacturers.FK_reference
    ORDER BY    glpi_plugin_order_references.name
    - Nombre de consommables usagées et nombre de lignes OK
    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
    SELECT     glpi_printers.name as cart_print,
                glpi_cartridges_type.ref as cart_ref,
                glpi_cartridges_type.name as cart_name,
                count(glpi_cartridges_type.name) as cart_qte        
    FROM         glpi_cartridges_type, 
                glpi_dropdown_cartridge_type,
                glpi_cartridges,
                glpi_printers
    WHERE         glpi_cartridges.FK_glpi_cartridges_type = glpi_cartridges_type.ID AND
                glpi_dropdown_cartridge_type.ID = glpi_cartridges_type.type AND
                glpi_cartridges.FK_glpi_printers = glpi_printers.ID AND
                glpi_cartridges.date_out IS NOT NULL            
    GROUP BY    glpi_cartridges_type.name,
                glpi_cartridges_type.ref,
                glpi_cartridges_type.name
    ORDER BY    glpi_cartridges_type.name
    La seule liaison que je puisse faire c'est entre :
    glpi_plugin_order_references.name et glpi_cartridges_type.name

Discussions similaires

  1. [VB.net] liaison entre table et textbox's
    Par collaud_vb dans le forum Windows Forms
    Réponses: 10
    Dernier message: 25/09/2006, 13h27
  2. [Access 2003]Problème de liaison entre table
    Par steeves5 dans le forum Access
    Réponses: 3
    Dernier message: 12/06/2006, 09h40
  3. [DEB] Probleme de liaison entre tables
    Par ip203 dans le forum Access
    Réponses: 4
    Dernier message: 07/06/2006, 07h16
  4. Liaison entre tables
    Par Thierry69800 dans le forum Access
    Réponses: 1
    Dernier message: 20/11/2005, 23h19
  5. Problèmes de liaisons entre tables ...
    Par Mangun dans le forum Access
    Réponses: 2
    Dernier message: 28/09/2005, 11h35

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