Bonjour
J'ai un petit souci avec une vue.
J'ai une vue dans la quelle interviennent 3 tables.
Les logements
Les hebergements (qui correspondent a une disponibilité d'un logement pour une manifestation)
Les contacts (à qui appartiennent les logements).
Pour un logement donné, je peux avoir les situations suivantes
- je n'ai aucun hébergement
- j'ai 1 hébergement
- j'ai plusieurs hébergements
Ma vue fonctionne bien, elle me retourne le liste de tous logements, avec des doublons s'il y a plusieurs hébergements.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 create ALGORITHM = MERGE view logementvue as SELECT t1.id,t1.refpersonne , t1.nombre, t1.remarque, t1.etat, t1.type,t2.nom, t2.prenom, t2.adresse1, t2.adresse2, t2.adresse3, t2.cp, t2.ville, t2.telephone, t2.email, t4.refmanifestation , t4.id as refhebergement, t4.jeudi, t4.vendredi, t4.samedi, t4.dimanche, t4.lundi, t4.disponible FROM logement AS t1 LEFT JOIN contactvue as t2 on t2.id=t1.refpersonne LEFT JOIN hebergement AS t4 ON t4.reflogement = t1.id
En gros ca me retourne par exemple
logement1 MrX Manif1 disponible
logement2 MrX Manif1 disponible
logement1 MrX Manif2 disponible
logement3 MrX null null
Mon problème c'est que je voudrais pouvoir selectionner la liste des logements "eligibles" pour une manifestation sans être poluée par les autres manifestations.
C'est a dire que je voudrais qu'il me retourne, la liste des logements avec soit la partie hébergement renseignée si la manifestation correspond soit rien
par exemple sur le cas au dessus je voudrais récupérer si je me préocuppe de la manif2
logement2 MrX null null
logement1 MrX Manif2 disponible
logement3 MrX null null
Si je j'appelle ma vue avec une condition par exemple (refmanif=manif3 or refmanif=null)
je ne récupère que
logement1 MrX Manif2 disponible
logement3 MrX null null
Ce qui est logique car la condition est effectuée après les jointures.
Pour que ca marche il faudrait que ma conditions s'applique dans la jointure
Cette vue rend le resultat attendu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 create ALGORITHM = MERGE view logementvue as SELECT t1.id,t1.refpersonne , t1.nombre, t1.remarque, t1.etat, t1.type,t2.nom, t2.prenom, t2.adresse1, t2.adresse2, t2.adresse3, t2.cp, t2.ville, t2.telephone, t2.email, t4.refmanifestation , t4.id as refhebergement, t4.jeudi, t4.vendredi, t4.samedi, t4.dimanche, t4.lundi, t4.disponible FROM logement AS t1 LEFT JOIN contactvue as t2 on t2.id=t1.refpersonne LEFT JOIN hebergement AS t4 ON t4.reflogement = t1.id and refmanifestation=Manif2
Mais ca n'est pas la solution car j'ai besoin de pouvoir choisir la manifestation en fonction des besoins !
Merci d'avance de votre aide
Partager