Recherche dans la bonne table
Posté : 25 juin 2007, 21:33
par auclairp
Voici mon code
// CRITÈRE DE LA REQUÊTE SQL
$champs = "description.code, description.nom, description.nomfr, description.genre, description.description, description.video, loan.loanto, loan.date_out, loan.attente, loan.retour";
$nom_table = "loan RIGHT JOIN description ON description.code=loan.code";
$where = "WHERE description.code LIKE '%".$keywords."%' OR description.nom LIKE '%".$keywords."%' OR description.nomfr LIKE '%".$keywords."%' ";
Le problème est qu'il recherche dans les 2 tables, moi je voudrais seulement qu'il recherche dan sla table description et qu'il aille prendre quelques éléments dna sc'elle loan.
voyez vous l'erreur
Posté : 25 juin 2007, 22:38
par sadeq
Enlève le mot clé RIGHT et laisse seulement JOIN car RIGHT JOIN fait une jointure à droite qui ne sert à rien dans ton cas.
Posté : 27 juin 2007, 15:10
par auclairp
Non ca ne fonctionne pas, je sais vraiment plus quoi faire. Je reprend mon explication
Voici, j'ai une collection de DVD à la maison que je prète à des amis, donc j'ai 2 tables (description et loan)
Tous les DVD ont un code unique dans la table description, lorsque je prète un dvd, j'ajoute dan sma table loan le nom de la personne, la date de sortie et le code pour lier le DVD à la description. Lorsque le DVD est de retour, je ne l'efface pas, je met une date de retour.
Voici, lorsque je crée une page ou il est possible de consulter toutes les DVD d ema biblio, au bout on peux voir si le film est dispo ou non, sauf que là le hic est qu'il s'affiche le nombre de fois qu'il se retouve dans ma table loan, moi je voudrais qu'il y soit qu'une seule fois,
j'ai essayer en modifiant ma requête boff pas grand chose, avec une condition IF, là pas pire, j'ai dit SI sortie=TRUE et entree=TRUE tu affiche pas, ca c'est OK, mais là le trouble est qu'il ne l'affiche pas dutout même si le retour est fait, car bien sure les 2 champ son définit.
Avez vous d'autre solution
Posté : 27 juin 2007, 15:48
par sadeq
Je vais t'aider à trouver la solution.
En fait ce que tu veux c'est d'afficher simplement si disponible ou pas devant chaque DVD de la liste des DVD.
Pour celà effectivement il ne faut pas inclure dans la requête les données de la table "loan" car puisqu'un DVD peut être prêté plusieurs fois, il apparait plusieurs fois dans la table "loan" et en liant cette table à la table "description" ça retourne pour 0,N prêt 0,N mêmes informations d'un DVD.
La solution est simple:
tu ajoute un champ "disponible" dans la table "description" que tu mets à 1 au moment du retour et 0 au moment du prêt.
et puis tu extrait la liste des DVD à partir de la table "description" ainsi le champ "disponible" s'affichera pour chaque DVD
Posté : 27 juin 2007, 19:50
par Invité
Merci je vais essayer cela
Je vais t'aider à trouver la solution.
En fait ce que tu veux c'est d'afficher simplement si disponible ou pas devant chaque DVD de la liste des DVD.
Pour celà effectivement il ne faut pas inclure dans la requête les données de la table "loan" car puisqu'un DVD peut être prêté plusieurs fois, il apparait plusieurs fois dans la table "loan" et en liant cette table à la table "description" ça retourne pour 0,N prêt 0,N mêmes informations d'un DVD.
La solution est simple:
tu ajoute un champ "disponible" dans la table "description" que tu mets à 1 au moment du retour et 0 au moment du prêt.
et puis tu extrait la liste des DVD à partir de la table "description" ainsi le champ "disponible" s'affichera pour chaque DVD