Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Dans mon appli, je peux faire une recherche sur des Items et des Users.
Une table attribution stock les attributions.
ITEM
item_id
etc..
USER
user_id
etc..
ATTRIBUTION
att_item_fk
att_user_fk
att_dateBegin
att_dateEnd
A noté que dateEnd est à null lorsque l'attribution est en cours, sinon il y a une date.
De plus la table Attribution stoque l'historique donc il y a des lignes qui ont la même att_item_fk ou att_user_fk.
Le problème est le suivant :
Lors d'une recherche j'ai besoin que les lignes venant de la table attribution n'apparaissent pas.
Car je peux faire une recherche avec plusieurs termes, et il y a un travail sur les résultats après.
Exemple :
Un item : ID = 1005
Un user : ID = 569
Un User : ID = 77
Dans la table attribution :
Att_item_fk att_user_fk att_dateBegin att_dateEnd
1005 569 09/06/2010 10/07/2010
1005 77 10/07/2010 NULL
Si je fais une recherche sur un attribut de l’Item 1005, alors les deux lignes me serons retournés
C’est ce que je ne veux pas.
Ma requête est la suivante :
public function search($word) { $query = $this->select()->setIntegrityCheck(false) ->from(array('i'=>'item')) ->join(array('a' => 'attribution'), 'a.attribut_item_fk = i.item_id') ->join(array('u' => 'user'), 'u.user_id = a.attribut_user_fk') ->orWhere("item_price LIKE '%$word%'") ->orWhere("item_serialNumber LIKE '%$word%'") ->orWhere("user_username LIKE '%$word%'"); return $this->fetchAll($query); }
Comment éliminer les ligner résultantes de la table Attribution ?
Merci
Dernière modification par maryooman (12-07-2010 10:46:05)
Hors ligne
si tu nous dis pas quelle ligne tu ne veux pas je ne vois pas comment on peut t'aider
par exemple
Att_item_fk att_user_fk att_dateBegin att_dateEnd 1005 569 09/06/2010 10/07/2010 1005 77 10/07/2010 NULL
min att_user_fk, max att_user_fk ?
min att_dateBegin, max att_dateBegin, att_dateBegin IS NULL
il suffit de mettre un where dans ta requête mais
impossible de dire lequel
on peut aussi mettre des condition dans les jointures
par exemple
public function search($word) { $query = $this->select()->setIntegrityCheck(false) ->from(array('i'=>'item')) ->join(array('a' => 'attribution'), 'a.attribut_item_fk = i.item_id AND att_dateEnd is not NULL' ) ->join(array('u' => 'user'), 'u.user_id = a.attribut_user_fk') ->orWhere("item_price LIKE '%$word%'") ->orWhere("item_serialNumber LIKE '%$word%'") ->orWhere("user_username LIKE '%$word%'"); return $this->fetchAll($query); }
A+JYT
Dernière modification par sekaijin (12-07-2010 10:58:18)
Hors ligne
Bonjour sekaijin
J'étais en train de rédiger un message d'une trentaine de lignes quand j'ai pensé à faire quelque chose que tu m'a montré.
J'ai mis une condition dans une jointure ! (fallait trouvé la bonne)
Je ne rentre pas plus dans les détails, je te remercie énormément !!
Hors ligne
Pages: 1