Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-05-2008 15:16:49

xzen
Membre
Date d'inscription: 05-05-2008
Messages: 12

problème d'un résultat

Voila, cela fait quelques temps que je découvre le Framework Zend et je voulais avoir quelques précisions sur la formulation de ma requête, en SQL elle passe bien, j'obtiens 1 résultat, et avec Zend j'obtiens pleins de redondances de 3 même résultat (tous car ce n'est qu'un jeu d'essai) :

Code:

            $db = Zend_Db_Table_Abstract::getDefaultAdapter();
            
            $select = $db->select();
            $select->from('materiel', array('id_materiel', 'nom_materiel' , 'numero_service_tag', 'numero_contrat'))
                              ->from('demande', 'id_demande')
                              ->from('resultat_demande', 'id_resultat')
                              ->from('utilisateur', 'id_utilisateur')
                              ->where('utilisateur.id_utilisateur = "1"')
                              ->join('demande', 'utilisateur.id_utilisateur = demande.id_demandeur', 'id_demande')
                              ->join('resultat_demande', 'demande.id_demande = resultat_demande.id_demande', array('id_materiel', 'date_echeance'))
                              ->where('resultat_demande.date_echeance < Now()')
                              ->join('materiel', 'resultat_demande.id_materiel = materiel.id_materiel', '*');

Tandis qu'avec la requête SQL suivante cela marche ...

Code:

SELECT mat.nom_materiel, mat.numero_service_tag, mat.numero_contrat
                    FROM resultat_demande res, materiel mat, utilisateur uti, demande dem 
                    WHERE uti.id_utilisateur = dem.id_demandeur
                    AND dem.id_demande = res.id_demande 
                    AND res.id_materiel = mat.id_materiel
                    AND res.date_echeance < Now()
                    AND dem.id_demandeur = 1

Je veux juste sélectionner mat.nom_materiel, mat.numero_service_tag, mat.numero_contrat, mais bon ..
Si quelqu'un à une idée .. je suis preneur ! smile

Hors ligne

 

#2 05-05-2008 15:48:11

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: problème d'un résultat

T'as essayé de faire

Code:

echo $select;

afin de voir si la requête SQL que va interprété le moteur db de ZF est identique que ta requête cité plus haut. Exécute là depuis ton phpmyadmin afin de voir combien de résultat tu obtiens.

Hors ligne

 

#3 05-05-2008 16:01:35

xzen
Membre
Date d'inscription: 05-05-2008
Messages: 12

Re: problème d'un résultat

merci de ta réponse,

J'ai effectivement fais le echo Select et quand je le met dans PhpMyAdmin ben la surprise, il y a une redondance sur les champs selectionnés .. je ne comprend pas, je veux juste un résultat composé de
'id_materiel', 'nom_materiel' , 'numero_service_tag', 'numero_contrat'
Cependant il me répète les champs de toutes les tables et la sans clause where, ce qui me donne X résultats, je ne sais pas trop à quoi c'est dû, car les premières cellules (celles que je veux) sont toutes bonnes, car elles sont identiques mais répété à cause des résultats (non demandés) des autres tables ..

Voila ce que cela donne :

Code:

SELECT `materiel`.`id_materiel`, `materiel`.`nom_materiel`, `materiel`.`numero_service_tag`, `materiel`.`numero_contrat`
, `demande`.`id_demande`, `resultat_demande`.`id_resultat`
, `utilisateur`.`id_utilisateur`, `utilisateur`.`nom_utilisateur`
, `demande_2`.*, `resultat_demande_2`.*, `materiel_2`.* FROM `materiel` INNER JOIN `demande` INNER JOIN `resultat_demande` INNER JOIN `utilisateur` INNER JOIN `demande` AS `demande_2` ON utilisateur.id_utilisateur = demande.id_demandeur INNER JOIN `resultat_demande` AS `resultat_demande_2` ON demande.id_demande = resultat_demande.id_demande INNER JOIN `materiel` AS `materiel_2` ON resultat_demande.id_materiel = materiel.id_materiel WHERE (utilisateur.id_utilisateur = 1) AND (resultat_demande.date_echeance < Now())

Dernière modification par xzen (05-05-2008 16:44:03)

Hors ligne

 

#4 06-05-2008 08:50:49

xzen
Membre
Date d'inscription: 05-05-2008
Messages: 12

Re: problème d'un résultat

Bon je crois que je suis un petit peu à la masse avec les INNER JOIN mais bon ça va mieu maintenant, c'étais plus une erreur de ma part, à force de faire que des AND ...
Merci WhiteSpirit pour l'info sur le echo de select j'y avais pas pensé, ça ma beaucoup aidé

Hors ligne

 

#5 06-05-2008 09:20:06

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: problème d'un résultat

Attention à ne pas mélanger INNER JOIN et LEFT/RIGHT OUTER JOIN


----
Gruiiik !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages