IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

select 4 table avec Join et where un soucis


Sujet :

PHP & Base de données

  1. #21
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux ajouter des condition "OR ISNULL(champ)" si tu fais un LEFT JOIN
    fais attention de bien organiser tes parenthèses.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Par défaut
    Alors je pige pas comment organiser tout CA !!!!!!

  3. #23
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Essaie au moins.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #24
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Par défaut
    Mais j'ai essayer pour la première fonction mais les variables donne rien
    Je vais essayer de tout combiner

  5. #25
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #26
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Par défaut
    J'en c.........

    J'ai tout combiner mais a mon avis pas dans le bon sens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Un ptit retour sur mes tables:
    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 ???

  7. #27
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    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 ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #28
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Par défaut
    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

  9. #29
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #30
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Par défaut
    On n'y allant étape par étape
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Et mysql répond
    #1066 - Not unique table/alias: 't3'

    J'ai commerciaux possible par rdv effectivement mais c'est agenda par agenda qui s'affiche

  11. #31
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    #1066 - Not unique table/alias: 't3'
    Le message est explicite : tu as mis deux tables t3

    J'ai commerciaux possible par rdv effectivement mais c'est agenda par agenda qui s'affiche
    Ton commercial pouvant être idcomm ou idcomm2 dans ta table "rdv" il faut faire des jointures pour chaque.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #32
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Par défaut
    Comment ca des jointures pour chaque ????

  13. #33
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Par défaut
    Donc mon appelle fonctionne mais j'en ai encore 2 est qu'il y a une solution pour tout regrouper

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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");

Discussions similaires

  1. Selection multi table avec filtre
    Par curumo dans le forum Requêtes
    Réponses: 6
    Dernier message: 20/11/2009, 23h16
  2. Récuperer différence entre deux tables avec JOIN
    Par Takumi dans le forum Requêtes
    Réponses: 6
    Dernier message: 17/08/2009, 22h59
  3. requete sur deux tables avec join et coalesce
    Par nifufu dans le forum Requêtes
    Réponses: 14
    Dernier message: 10/02/2009, 13h51
  4. selection de table avec un suffix
    Par phildu dans le forum Outils
    Réponses: 1
    Dernier message: 26/02/2007, 23h20
  5. Insert avec select sur table avec Trigger d'insertion
    Par bran_noz dans le forum Développement
    Réponses: 5
    Dernier message: 23/12/2005, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo