Tu peux ajouter des condition "OR ISNULL(champ)" si tu fais un LEFT JOIN
fais attention de bien organiser tes parenthèses.
Version imprimable
Tu peux ajouter des condition "OR ISNULL(champ)" si tu fais un LEFT JOIN
fais attention de bien organiser tes parenthèses.
Alors je pige pas comment organiser tout CA !!!!!!
Essaie au moins.
Mais j'ai essayer pour la première fonction mais les variables donne rien
Je vais essayer de tout combiner
Fais comme je t'ai dis : pars de ta requete sans WHERE et avec un SELECT *, tu vois déjà ce que contiennent tes champs et tu ajoutes tes conditions WHERE petit à petit.
J'en c.........
J'ai tout combiner mais a mon avis pas dans le bon sens
Un ptit retour sur mes tables:Code:
1
2
3
4 SELECT t1.idclient, t2.nomclient, t.prenomclient, t2.cp ,t2.ville, t2.telephone, t2.portable, t4.couleur FROM rdv AS t1 INNER JOIN prospet AS t2 ON t2.id = t1.idclient AND t1.confirmrappel = '$daterdvref' AND (t1.idcomm = '$nomcomref' or t1.idcomm2 = '$nomcomref') AND t1.confirm = '3' AND t1.resultatrdv ='0' OR ISNULL(t4.couleur) LEFT JOIN zone AS t3 ON t3.cp=t2.cp AND t3.Idcomm= '$nomcomref' INNER JOIN couleur t4.Idcouleurs=t3.Id order BY t1.id ASC
rdv = t1
id
idcomm
idcomm2
idclient
telepro
rdvcomm
rdvcommheure
confirm
confirmcom
confirmrappel
resultatrdv
prospect = t2
id
nomclient
prenomclient
adresse
cp
ville
telephone
portable
zone = t3
Id
Idcomm
Idcouleurs
cp
couleur
id
nom_couleur
couleur
Je me suis tromper ou ???
Ton "OR ISNULL(t4.couleur)" ne sert a rien puisque tu n'as pas de condition liée à la colonne couleur.
Le LEFT JOIN est à mettre pour la table "couleur" puisque si j'ai bien compris, c'est sur cette table qu'il n'y a pas tous les éléments.
A quoi correspond ce idcomm qui est présent à la fois dans rdv et dans zone ?
C'est id des commerciaux
Car cette appel permet au commerciaux de voir leur rdv
Mais je n'ai tjs pas compris qui va ou ???!!!!
En fait les élément sont sur prospet et rdv
La table zone et couleur me permet seulement de connaitre le code couleurs de la zone de travail du commercial
et les 2 variables qui changes la valeur de la table est $nomcomref et $daterdvref
Fais comme je te dis : fais un SELECT * avec uniquement tes définitions de jointures.
Tu obtiens toutes les lignes.
Tu ajoutes ensuite tes filtres WHERE un à un ; comme ca tu vois precisemment quelle condition n'est pas bonne.
Dans ta requête il manque en particulier une composante : tu as deux commerciaux possibles par rdv, il manque donc une jointure avec idcomm2 pour la couleur et une jointure avec idcomme2 pour la zone.
On n'y allant étape par étape
Et mysql répondCode:
1
2
3 SELECT t1.idclient, t2.nomclient, t.prenomclient, t2.cp ,t2.ville, t2.telephone, t2.portable FROM rdv AS t1 INNER JOIN prospet AS t2 ON t2.id = t1.idclient LEFT JOIN zone AS t3 ON t3.cp=t2.cp LEFT JOIN couleur t3.Idcouleurs=t4.Id order BY t1.id ASC
#1066 - Not unique table/alias: 't3'
J'ai commerciaux possible par rdv effectivement mais c'est agenda par agenda qui s'affiche
Le message est explicite : tu as mis deux tables t3Citation:
#1066 - Not unique table/alias: 't3'
Ton commercial pouvant être idcomm ou idcomm2 dans ta table "rdv" il faut faire des jointures pour chaque.Citation:
J'ai commerciaux possible par rdv effectivement mais c'est agenda par agenda qui s'affiche
Comment ca des jointures pour chaque ????
Donc mon appelle fonctionne mais j'en ai encore 2 est qu'il y a une solution pour tout regrouper
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 function verifaffichagecase($nomcomref,$condition2,$condition,$orderby,$visuel) { $couleurtd=''; $sql = "SELECT t1.id FROM rdv AS t1 INNER JOIN prospet AS t2 ON t2.id = t1.idclient AND (t1.idcomm='$nomcomref' OR t1.idcomm2='$nomcomref') $condition2 order BY t1.id DESC"; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); $data = mysql_fetch_array($req); $id=$data['id']; $condition.="AND t1.id = '$id'"; affichagecase($nomcomref,$condition,$orderby,$visuel); } function affichagecase($nomcomref,$condition,$orderby,$visuel) { $couleurtd=''; $datejour = date("Ymd"); $sql = "SELECT t1.idclient, t2.nomclient, t2.prenomclient, t2.cp ,t2.ville, t2.telephone, t2.portable, t2.adresse, t4.couleur, t1.id, t1.rdvcommheure , t1.rdvcomm, t1.confirmcom, t1.resultatrdv, t2.rdv FROM rdv AS t1 INNER JOIN prospet AS t2 ON t2.id = t1.idclient AND (t1.idcomm='$nomcomref' OR t1.idcomm2='$nomcomref') $condition LEFT JOIN zone AS t3 ON t3.cp=t2.cp and t3.Idcomm='$nomcomref' LEFT JOIN couleur AS t4 ON (t3.Idcouleurs=t4.Id OR ISNULL(t4.couleur)) order BY t1.$orderby ASC"; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); while($data = mysql_fetch_array($req)) { ....} verifaffichagecase($nomcomref,"AND t1.confirm = '3' and t1.resultatrdv ='0'","AND t1.confirmrappel = '$daterdvref' and t1.confirm = '3' and t1.resultatrdv ='0'","rdvcommheure","rappel"); verifaffichagecase($nomcomref,"AND t1.resultatrdv ='3'","AND t1.rappel = '$daterdvref' and t1.resultatrdv ='3'","rappel","rappel"); affichagecase($nomcomref,"AND t1.rdvcomm = '$daterdvref' and t1.resultatrdv !='4' and t1.resultatrdv !='8'and (t1.confirm = '0' or t1.confirm =1 or t1.confirm ='5')","rdvcommheure","rdv");