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 :

jointure de 4 tables mysql [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Par défaut jointure de 4 tables mysql
    Bonjour a tous,
    avant de me lancer trop loin, j'aurais aimé avoir des renseignement sur vos techniques de jointure de table...

    j'ai quattre tables de ce type :

    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
    48
    49
    50
    51
    table contrat
    Champ  	Type   	         Null  	Défaut
    id  	    int(11) 	     Non  	  	 
    pid  	    int(11)         Non  	  	 
    contrat   varchar(80) 	Non  	  	 
    emploie  varchar(80)   Non  
    
    table CV
    Champ  	Type   	Null  	Défaut
    id  	int(11) 	Non  	  	 
    titre  	varchar(80) 	Non  	  	 
    nom  	varchar(80) 	Non  	  	 
    prenom  	varchar(80) 	Non  	  	 
    email  	varchar(80) 	Non  	  	 
    adresse1  	varchar(255) 	Non  	  	 
    adresse2  	varchar(80) 	Non  	  	 
    codeP  	varchar(80) 	Non  	  	 
    ville  	varchar(80) 	Non  	  	 
    pays  	varchar(80) 	Non  	  	 
    fichier  	varchar(80) 	Non  	  	 
    timestamp  	bigint(20) 	Non  	  	 
    
    table experience
    Champ  	Type   	Null  	Défaut
    id  	int(11) 	Non  	  	 
    pid  	int(11) 	Non  	  	 
    titre  	varchar(80) 	Non  	  	 
    aucune  	tinyint(1) 	Non  	  	 
    nomentreprise  	varchar(80) 	Non  	  	 
    ville  	varchar(80) 	Non  	  	 
    province  	varchar(255) 	Non  	  	 
    pays  	varchar(80) 	Non  	  	 
    intitulé  	varchar(255) 	Non  	  	 
    description  	text 	Non  	  	 
    dateD  	bigint(20) 	Non  	  	 
    dateF  	bigint(20) 	Non  	  	 
    
    table formation
    
     id   	int(11)   	Non   	    	 
    pid  	int(11) 	Non  	  	 
    niveau  	varchar(80) 	Non  	  	 
    intitule  	varchar(80) 	Non  	  	 
    ecole  	varchar(80) 	Non  	  	 
    ville  	varchar(80) 	Non  	  	 
    province  	varchar(255) 	Non  	  	 
    pays  	varchar(80) 	Non  	  	 
    information  	text 	Non  	  	 
    dateD  	bigint(20) 	Non  	  	 
    dateF  	bigint(20) 	Non

    j'aurais aimé pouvoir les joindre en fonction de l'id de la table CV ..

    j'ai pensé à ça ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour = mysql_query('SELECT  *  FROM CV LEFT JOIN experience ON pid.experience = CV.id LEFT JOIN formation ON pid.formation = CV.id LEFT JOIN contrat ON pid.contrat = CV.id WHERE CV.id = 1');

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 44
    Par défaut
    Salut

    A première vue ça doit fonctionner.

    Mais attention, avec les LEFT JOIN tu vas récupérer des lignes de CV qui n'ont pas forcément de correspondance avec les autres tables.
    Si tu veux cette correpondance, tu dois utiliser un INNER JOIN, ou une jointure à la oracle-style.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Par défaut
    on peut faire des jointure à la oracle? ça me tente moi ^^

    je test avec inner dès que j'ai finis de coder autre choses ^^

    merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Par défaut
    donc voilà

    je test le tout avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $retour = mysql_query('SELECT  *  FROM CV INNER JOIN experience ON pid.experience = CV.id INNER JOIN formation ON pid.formation = CV.id INNER JOIN contrat ON pid.contrat = CV.id WHERE CV.id = 1'); 
    $donnees = mysql_fetch_array($retour);
     
    echo $donnees['CV.id']; echo $donnees['experience.titre'];
    et il me mets l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/chm2/www/test/administration/test.php on line 12
    si vosu avez une idée

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Par défaut
    en supprimmant le mysql_fecth_array, plus d'erreur mais strictement rien d'afficher...

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 44
    Par défaut
    tu devrais d'abord mettre au point tes requêtes directement sur ta DB avant de les inclure dans ton code php...

  7. #7
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Le mieux si tu n'as pas besoin de tous tes champs est d'éviter le select *.
    Si tu le peux mets juste les champs dont tu as besoin déjà genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $retour = mysql_query('SELECT  CV.id as id, experience.titre as titre  FROM CV INNER JOIN experience ON pid.experience = CV.id INNER JOIN formation ON pid.formation = CV.id INNER JOIN contrat ON pid.contrat = CV.id WHERE CV.id = 1');
    Ensuite utilise OR die(mysql_error()) à la fin de ta requête voir si elle te ramène une erreur ou pas.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 57
    Par défaut
    le tout est que j'ai besoin de tout les titres,....

    le OR die(mysql_error())
    me permet de voir l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: syntax error, unexpected T_VARIABLE in /home/chm2/www/test/administration/test.php on line 12
    ligne 12 =
    je vois pas trop...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Jointure tables MySQL
    Par asvin dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/10/2008, 21h21
  2. Jointure entre 2 tables MySQL (Suite)
    Par johnkro dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/07/2006, 14h14
  3. Jointure entre 2 tables MySQL
    Par johnkro dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/07/2006, 14h52
  4. jointure entre deux tables mysql
    Par Invité dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 23/04/2006, 20h08
  5. [MySQL] Jointure sur une table déjà jointe
    Par genova dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/10/2005, 23h54

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