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

Requêtes MySQL Discussion :

Requete routine php recherche donnees clients


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2009
    Messages : 37
    Par défaut Requete routine php recherche donnees clients
    Bonjour

    J'y arrive pas c'est pourtant pas complique mais je bloque alors svp si quelqu'un peut m'aider ca me rendrait un grand service, une journée dessus.

    table client :
    id,
    nom,
    prenom,
    ...,
    iddomcile,
    idtravail

    table adresse:
    id,
    numero,
    rue,
    ville,
    etc..

    je voudrai aliment un tableau en php qui contient les donnees du client avec son adresse de domicile et son adresse de travail.

    Comment faire svp ?
    merci a tous pour votre aide

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut sandy2626

    C'est cela que tu voulais :
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `adresse`
    --------------
     
    --------------
    CREATE TABLE `adresse`
    (
      `id`       integer unsigned NOT NULL AUTO_INCREMENT Primary Key,
      `numero`   integer unsigned NOT NULL,
      `rue`      varchar(255)     NOT NULL,
      `ville`    varchar(255)     NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `adresse` (`numero`, `rue`, `ville`) VALUES
    (15, 'boulevard albert le grand', 'Toulouse'),
    (25, 'avenue des champs élysées', 'Paris'),
    (99, 'impasse saint-denis',       'Lyon'),
    (45, 'boulevard jean-jaures',     'Marseille'),
    (77, 'rue des allongés',          'Grenoble'),
    (12, 'route sans issue',          'Lille')
    --------------
     
    --------------
    select * from adresse
    --------------
     
    +----+--------+---------------------------+-----------+
    | id | numero | rue                       | ville     |
    +----+--------+---------------------------+-----------+
    |  1 |     15 | boulevard albert le grand | Toulouse  |
    |  2 |     25 | avenue des champs élysées | Paris     |
    |  3 |     99 | impasse saint-denis       | Lyon      |
    |  4 |     45 | boulevard jean-jaures     | Marseille |
    |  5 |     77 | rue des allongés          | Grenoble  |
    |  6 |     12 | route sans issue          | Lille     |
    +----+--------+---------------------------+-----------+
    --------------
    DROP TABLE IF EXISTS `client`
    --------------
     
    --------------
    CREATE TABLE `client`
    (
      `id`       integer unsigned NOT NULL AUTO_INCREMENT Primary Key,
      `nom`      varchar(255)     NOT NULL,
      `prenom`   varchar(255)     NOT NULL,
      `domicile` integer unsigned     NULL,
      `travail`  integer unsigned     NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `client` (`nom`, `prenom`,`domicile`,`travail`) VALUES
    ('nom 1', 'prenom 1', 1,    2),
    ('nom 2', 'prenom 2', 3,    4),
    ('nom 3', 'prenom 3', 5,    null),
    ('nom 4', 'prenom 4', null, 6)
    --------------
     
    --------------
    select * from client
    --------------
     
    +----+-------+----------+----------+---------+
    | id | nom   | prenom   | domicile | travail |
    +----+-------+----------+----------+---------+
    |  1 | nom 1 | prenom 1 |        1 |       2 |
    |  2 | nom 2 | prenom 2 |        3 |       4 |
    |  3 | nom 3 | prenom 3 |        5 |    NULL |
    |  4 | nom 4 | prenom 4 |     NULL |       6 |
    +----+-------+----------+----------+---------+
    --------------
    select c.id      as 'id cli',
           c.nom     as 'nom cli',
           c.prenom  as 'prenom cli',
           d.id      as 'id dom',
           d.numero  as 'numero dom',
           d.rue     as 'rue dom',
           d.ville   as 'ville dom',
           t.id      as 'id trav',
           t.numero  as 'numero trav',
           t.rue     as 'rue trav',
           t.ville   as 'ville trav'
    from            client  as c
     
    left outer join adresse as d
    on d.id = c.domicile
     
    left outer join adresse as t
    on t.id = c.travail
    --------------
     
    +--------+---------+------------+--------+------------+---------------------------+-----------+---------+-------------+---------------------------+------------+
    | id cli | nom cli | prenom cli | id dom | numero dom | rue dom                   | ville dom | id trav | numero trav | rue trav                  | ville trav |
    +--------+---------+------------+--------+------------+---------------------------+-----------+---------+-------------+---------------------------+------------+
    |      1 | nom 1   | prenom 1   |      1 |         15 | boulevard albert le grand | Toulouse  |       2 |          25 | avenue des champs élysées | Paris      |
    |      2 | nom 2   | prenom 2   |      3 |         99 | impasse saint-denis       | Lyon      |       4 |          45 | boulevard jean-jaures     | Marseille  |
    |      3 | nom 3   | prenom 3   |      5 |         77 | rue des allongés          | Grenoble  |    NULL |        NULL | NULL                      | NULL       |
    |      4 | nom 4   | prenom 4   |   NULL |       NULL | NULL                      | NULL      |       6 |          12 | route sans issue          | Lille      |
    +--------+---------+------------+--------+------------+---------------------------+-----------+---------+-------------+---------------------------+------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
     
    Appuyez sur une touche pour continuer...
    @+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2009
    Messages : 37
    Par défaut
    Merci Artemus,

    J'ai creer ton exemple, il marche nickel c'est exactement ca que je cherche a avoir. Mais malheureusement quand j'essaye de l'appliquer a mon cas ca ne marche pas. peux-tu me dire ce que je n'ai pas bien fait? Voici ma requete :
    L'erreur que phpmyadmin me donne est :
    1054 : unknown column c.iddomicile in on clause
    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
    SELECT relations_client_professionel.idprofessionel, 				
    												types_professionel.nom as nomservice,
    												types_professionel.id as idtypepro,
    												professionels.nom as nomprofessionel,
    												c.id as idclient,
    												c.nom as nomclient,
    												c.prenom as prenomclient,
    												c.iddomicile,
    												c.idtravail,
    												c.idtype,
    												c.telephone,
    												c.email,
    												c.pass,
    												c.age,
    												c.sexe,
    												c.idimg,
    												c.is_active,
    												images.url as url
     
    											FROM 	relations_client_professionel, 
    													professionels, 
    													types_professionel ,
    													clients as c,
    													images
     
    												left outer join adresses as d on d.id = c.iddomicile
     												left outer join adresses as t on t.id = c.idtravail
     
     												WHERE relations_client_professionel.idclient=c.id
    												AND professionels.idlogo=images.id
    												AND relations_client_professionel.idemail=c.email
    												AND relations_client_professionel.idprofessionel = professionels.id 
    												AND professionels.idtype = types_professionel.id
    												AND c.email='sec@sec.com'
    												AND c.pass='1111'
    MERCI !

  4. #4
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut sandy2626.

    Dans mon exemple, j'ai écrit : "domicile", avec un i.
    Dans ton exemple, tu as écrit "iddomcile" sans le i.
    Donc ton erreur de syntaxe provient de cette différence.

    Ne préfixe pas tes noms de colonnes par le nom de la table comme tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    relations_client_professionel.idclient
    Dans le from, tu mets ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    relations_client_professionel as r
    puis quand tu indiques la colonne, tu mets l'alias :
    C'est juste un détail, mais cela permet de mieux lire la requête.

    @+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2009
    Messages : 37
    Par défaut
    Voila j'ai re ecrit ma requete mais le probleme n'est pas resolu, je n'ai pas vu le domcile .

    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
     
    SELECT r.idprofessionel, 				
    tp.nom as nomservice,
    tp.id as idtypepro,
    p.nom as nomprofessionel,
    c.id as idclient,
    c.nom as nomclient,
    c.prenom as prenomclient,
    c.iddomicile,
    c.idtravail,
    c.idtype,
    c.telephone,
    c.email,
    c.pass,
    c.age,
    c.sexe,
    c.idimg,
    c.is_active,
    d.adresse_domicile,
    d.ville_domicile,
    d.codepostal_domicile,
    d.pays_domicile,
    t.adresse_travail,
    t.ville_travail,
    t.codepostal_travail,
    t.pays_travail,
    i.url as url
    FROM 	relations_client_professionel as r, 
    		professionels as p, 
    		types_professionel as tp,
    		clients as c,
    		images as i
    left outer join adresses as d on d.id = c.iddomicile
    left outer join adresses as t on t.id = c.idtravail
    WHERE r.idclient=c.id
    AND p.idlogo=i.id
    AND r.idemail=c.email
    AND r.idprofessionel = p.id 
    AND p.idtype = tp.id
    AND c.id=4551
    d'ou vient le probleme ?? je crois que lorsqu'on travaille trop longtemps sur la meme requete on ne voit plus rien

    merci de m'aider.

  6. #6
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut Sandy2626.

    Dans ton premier message, tu indiques "iddomcile", sans le i. Quand j'ai fait l'exemple, j'ai mis "domicile", avec un i.
    Tu as repris mon exemple en mettant id devant, soit "iddomicile".
    Alors que tu aurais dû mettre "iddomcile", sans le i en seconde position, celui que j'ai mis en rouge, ci-dessus.
    Ci-après, j'ai trouvé deux fois la colonne en question et je les ai mis en rouge.
    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
    SELECT r.idprofessionel, 				
    tp.nom as nomservice,
    tp.id as idtypepro,
    p.nom as nomprofessionel,
    c.id as idclient,
    c.nom as nomclient,
    c.prenom as prenomclient,
    c.iddomicile,
    c.idtravail,
    c.idtype,
    c.telephone,
    c.email,
    c.pass,
    c.age,
    c.sexe,
    c.idimg,
    c.is_active,
    d.adresse_domicile,
    d.ville_domicile,
    d.codepostal_domicile,
    d.pays_domicile,
    t.adresse_travail,
    t.ville_travail,
    t.codepostal_travail,
    t.pays_travail,
    i.url as url
    FROM 	relations_client_professionel as r, 
    		professionels as p, 
    		types_professionel as tp,
    		clients as c,
    		images as i
    left outer join adresses as d on d.id = c.iddomicile
    left outer join adresses as t on t.id = c.idtravail
    WHERE r.idclient=c.id
    AND p.idlogo=i.id
    AND r.idemail=c.email
    AND r.idprofessionel = p.id 
    AND p.idtype = tp.id
    AND c.id=4551
    Citation Envoyé par Sandy2626
    Je crois que lorsqu'on travaille trop longtemps sur la même requête on ne voit plus rien
    C'est de la fatigue.

    @+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2009
    Messages : 37
    Par défaut
    mon premier message, j'avais en fait ecrit un exemple succin de ce que je voulais faire et pour le i manquant c'etait une faute de frappe tu as raison Artemus24, c'est de la fatigue

    bon, mais c'est bien c.iddomicile qu'il me faut et dans la where clause aussi. et ce message d'erreur est toujours la. mais plus sur iddomicile mais d.adresse_domicile
    1054 : unknown column d.adresse_domicile in on clause

    (avec quoi on balise les messages d'erreur ?)

  8. #8
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut sandy2626.

    Que ce soit 'd' (pour domicile) ou soit 't' (pour travail), la table qui se trouve derrière est la même, à savoir 'adresses'.

    si dans ta requête tu indiques les colonnes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    --> d.adresse_domicile,
    --> d.ville_domicile,
    --> d.codepostal_domicile,
    --> d.pays_domicile,
    --> t.adresse_travail,
    --> t.ville_travail,
    --> t.codepostal_travail,
    --> t.pays_travail,
    est-ce que ces colonnes existent réellement ? Je pense que non !
    Ce ne serait pas plutôt ceci que tu aurais dû écrire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    --> d.adresse     as adresse_domicile,
    --> d.ville       as ville_domicile,
    --> d.codepostal  as codepostal_domicile,
    --> d.pays        as pays_domicile,  
    --> t.adresse     as adresse_travail,
    --> t.ville       as ville_travail,
    --> t.codepostal  as codepostal_travail,
    --> t.pays        as pays_travail,
    Reprends ma requête et regarde comment j'ai fait.

    @+

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2009
    Messages : 37
    Par défaut
    houlala oui tu as raison j'ai honte, en effet les colonnes n'ont pas dutout ce nom. je refais ma requête et je viens poster le resultat. Et je dois rajouter des jointures sur la table "ville" et pays. Comment j'ai fait cette betise! Merci a toute...

  10. #10
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Mais non, aucun raison d'avoir honte. C'est juste de la fatigue !

    Dors bien cette nuit et reprends cela à tête reposé demain.

    Si tu as d'autres questions n'hésite pas.

    @+

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2009
    Messages : 37
    Par défaut
    non il faut que je finisse ca ce sort (ou cette nuit lol)

    alors resultat pas trop mal :

    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
     
    SELECT r.idprofessionel, 
    p.nom as nomprofessionel,
    tp.nom as nomservice,
    tp.id as idtypepro,
    c.id as idclient,
    c.nom as nomclient,
    c.prenom as prenomclient,
    c.iddomicile,
    d.adresse as adresse_domicile,
    t.adresse as adresse_travail,
    c.idtravail,
    c.idtype,
    c.telephone,
    c.email,
    c.pass,
    c.age,
    c.sexe,
    c.idimg,
    c.is_active,
    i.url as url
    FROM 	relations_client_professionel as r, 
    		professionels as p,
    		images as i, 
    		types_professionel as tp,
    		clients as c
    left outer join adresses as d on d.id = c.iddomicile
    left outer join adresses as t on t.id = c.idtravail
    WHERE  c.id=4551
    AND r.idemail=c.email
    AND r.idprofessionel = p.id 
    AND p.idlogo=i.id
    AND p.idtype = tp.id
    ca marche nickel, merci Artemus24 mais pour recuperer le code postal de l'adresse domicile et celui de l'adresse travail ca se corse un peu.

    en effet j'a le "idville" qui se trouve dans la table ADRESSES et je dois recuperer la ville et son code postal dans la table VILLES qui contient le "idpays" me permettant de recuperer le "pays" dans la table PAYS
    tu me suis j'en suis sure.
    ADRESSES
    idville

    VILLES
    id
    ville
    code postal,
    idpays

    PAYS
    id
    pays

    si tu as encore de la force je suis preneuse...merci Artemus24

  12. #12
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut Sandy2626.

    C'est un peu plus compliqué mais le principe reste le même.
    J'ai créé la table pays (en fait les département) et la table des villes.

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `pays`
    --------------
     
    --------------
    CREATE TABLE `pays`
    (
      `id`           integer unsigned NOT NULL AUTO_INCREMENT Primary Key,
      `pays`         varchar(255)     NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `pays` (`id`, `pays`) VALUES
      (31, 'Garonne'),
      (75, 'Ville de Paris'),
      (38, 'Isère'),
      (21, 'Côte d''or'),
      (24, 'Dordogne'),
      (33, 'Gironde')
    --------------
     
    --------------
    select * from pays
    --------------
     
    +----+----------------+
    | id | pays           |
    +----+----------------+
    | 21 | Côte d'or      |
    | 24 | Dordogne       |
    | 31 | Garonne        |
    | 33 | Gironde        |
    | 38 | Isère          |
    | 75 | Ville de Paris |
    +----+----------------+
    --------------
    DROP TABLE IF EXISTS `ville`
    --------------
     
    --------------
    CREATE TABLE `ville`
    (
      `id`           integer unsigned NOT NULL AUTO_INCREMENT Primary Key,
      `ville`        varchar(255)     NOT NULL,
      `codepostal`   integer unsigned NOT NULL,
      `pays`         integer unsigned NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `ville` (`ville`, `codepostal`, `pays`) VALUES
      ('Toulouse',  31000, 31),
      ('Paris',     75000, 75),
      ('Grenoble',  38000, 38),
      ('Dijon',     21000, 21),
      ('Périgueux', 24000, 24),
      ('Bordeaux',  33000, 33)
    --------------
     
    --------------
    select * from ville
    --------------
     
    +----+-----------+------------+------+
    | id | ville     | codepostal | pays |
    +----+-----------+------------+------+
    |  1 | Toulouse  |      31000 |   31 |
    |  2 | Paris     |      75000 |   75 |
    |  3 | Grenoble  |      38000 |   38 |
    |  4 | Dijon     |      21000 |   21 |
    |  5 | Périgueux |      24000 |   24 |
    |  6 | Bordeaux  |      33000 |   33 |
    +----+-----------+------------+------+
    --------------
    DROP TABLE IF EXISTS `adresse`
    --------------
     
    --------------
    CREATE TABLE `adresse`
    (
      `id`       integer unsigned NOT NULL AUTO_INCREMENT Primary Key,
      `numero`   integer unsigned NOT NULL,
      `rue`      varchar(255)     NOT NULL,
      `cite`     integer unsigned NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `adresse` (`numero`, `rue`, `cite`) VALUES
    (15, 'boulevard albert le grand', 1),
    (25, 'avenue des champs élysées', 2),
    (99, 'impasse saint-denis',       3),
    (45, 'boulevard jean-jaures',     4),
    (77, 'rue des allongés',          5),
    (12, 'route sans issue',          6)
    --------------
     
    --------------
    select * from adresse
    --------------
     
    +----+--------+---------------------------+------+
    | id | numero | rue                       | cite |
    +----+--------+---------------------------+------+
    |  1 |     15 | boulevard albert le grand |    1 |
    |  2 |     25 | avenue des champs élysées |    2 |
    |  3 |     99 | impasse saint-denis       |    3 |
    |  4 |     45 | boulevard jean-jaures     |    4 |
    |  5 |     77 | rue des allongés          |    5 |
    |  6 |     12 | route sans issue          |    6 |
    +----+--------+---------------------------+------+
    --------------
    DROP TABLE IF EXISTS `client`
    --------------
     
    --------------
    CREATE TABLE `client`
    (
      `id`       integer unsigned NOT NULL AUTO_INCREMENT Primary Key,
      `nom`      varchar(255)     NOT NULL,
      `prenom`   varchar(255)     NOT NULL,
      `domicile` integer unsigned     NULL,
      `travail`  integer unsigned     NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `client` (`nom`, `prenom`,`domicile`,`travail`) VALUES
    ('nom 1', 'prenom 1', 1,    2),
    ('nom 2', 'prenom 2', 3,    4),
    ('nom 3', 'prenom 3', 5,    null),
    ('nom 4', 'prenom 4', null, 6)
    --------------
     
    --------------
    select * from client
    --------------
     
    +----+-------+----------+----------+---------+
    | id | nom   | prenom   | domicile | travail |
    +----+-------+----------+----------+---------+
    |  1 | nom 1 | prenom 1 |        1 |       2 |
    |  2 | nom 2 | prenom 2 |        3 |       4 |
    |  3 | nom 3 | prenom 3 |        5 |    NULL |
    |  4 | nom 4 | prenom 4 |     NULL |       6 |
    +----+-------+----------+----------+---------+
    --------------
    select  c.id           as 'id cli',
            c.nom          as 'nom cli',
            c.prenom       as 'prenom cli',
            d.id           as 'id dom',
            d.numero       as 'numero dom',
            d.rue          as 'rue dom',
            d.cite         as 'id ville dom',
           vd.ville        as 'ville dom',
           vd.codepostal   as 'code postal dom',
           vd.pays         as 'id pays dom',
           pd.pays         as 'pays dom',
     
            t.id           as 'id trav',
            t.numero       as 'numero trav',
            t.rue          as 'rue trav',
            t.cite         as 'id ville trav',
           vt.ville        as 'ville trav',
           vt.codepostal   as 'code postal trav',
           vt.pays         as 'id pays trav',
           pt.pays         as 'pays trav'
    from            client  as c
     
    left outer join adresse as d
    on d.id = c.domicile
     
    left outer join adresse as t
    on t.id = c.travail
     
    left outer join ville   as vd
    on vd.id = d.cite
     
    left outer join ville   as vt
    on vt.id = t.cite
     
    left outer join pays    as pd
    on pd.id = vd.pays
     
    left outer join pays    as pt
    on pt.id = vt.pays
    --------------
     
    +--------+---------+------------+--------+------------+---------------------------+--------------+-----------+-----------------+-------------+----------+---------+-------------+---------------------------+---------------+------------+------------------+--------------+----------------+
    | id cli | nom cli | prenom cli | id dom | numero dom | rue dom                   | id ville dom | ville dom | code postal dom | id pays dom | pays dom | id trav | numero trav | rue trav                  | id ville trav | ville trav | code postal trav | id pays trav | pays trav      |
    +--------+---------+------------+--------+------------+---------------------------+--------------+-----------+-----------------+-------------+----------+---------+-------------+---------------------------+---------------+------------+------------------+--------------+----------------+
    |      1 | nom 1   | prenom 1   |      1 |         15 | boulevard albert le grand |            1 | Toulouse  |           31000 |          31 | Garonne  |       2 |          25 | avenue des champs élysées |             2 | Paris      |            75000 |           75 | Ville de Paris |
    |      2 | nom 2   | prenom 2   |      3 |         99 | impasse saint-denis       |            3 | Grenoble  |           38000 |          38 | Isère    |       4 |          45 | boulevard jean-jaures     |             4 | Dijon      |            21000 |           21 | Côte d'or      |
    |      3 | nom 3   | prenom 3   |      5 |         77 | rue des allongés          |            5 | Périgueux |           24000 |          24 | Dordogne |    NULL |        NULL | NULL                      |          NULL | NULL       |             NULL |         NULL | NULL           |
    |      4 | nom 4   | prenom 4   |   NULL |       NULL | NULL                      |         NULL | NULL      |            NULL |        NULL | NULL     |       6 |          12 | route sans issue          |             6 | Bordeaux   |            33000 |           33 | Gironde        |
    +--------+---------+------------+--------+------------+---------------------------+--------------+-----------+-----------------+-------------+----------+---------+-------------+---------------------------+---------------+------------+------------------+--------------+----------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
     
    Appuyez sur une touche pour continuer...
    C'est tout pour ce soir. Bonne nuit !
    @+

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2009
    Messages : 37
    Par défaut
    Je suis contente, j'y étais arrivée toute seule pour la ville. Pour le pays je vais essayer aussi toute seule a titre d'exercice et regarder le corrige.
    Je viendrai demain matin poster le resultat final.

    En tous cas Artemus24 je tiens a te remercier vivement pour ton aide et ta patience car grace a toi ce soir j'ai beaucoup appris. Un ENNORME MERCI.

    Bonne nuit

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2009
    Messages : 37
    Par défaut
    Bonjour Artemus24,


    Voila, tout marche nickel !!!
    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
     
    SELECT distinct r.idprofessionel, 
    tp.id as idtypepro,
    tp.nom as nomservice,
    p.nom as nomprofessionel,
    c.id as idclient,
    c.nom as nomclient,
    c.prenom as prenomclient,
    c.iddomicile,
    c.idtravail,
    d.adresse as adresse_domicile, 
    vd.nom as ville_domicile,
    vd.codepostal as codepostal_domicile,
    pd.nom as pays_domicile,
    t.adresse as adresse_travail, 
    vt.nom as ville_travail,
    vt.codepostal as codepostal_travail,
    pt.nom as pays_travail,
    c.idtravail,
    c.idtype,
    c.telephone,
    c.email,
    c.pass,
    c.age,
    c.sexe,
    c.idimg,
    c.is_active,
    i.url as url
    FROM 	relations_client_professionel as r, 
    professionels as p,
    images as i, 
    types_professionel as tp,
    clients as c
     
    left outer join adresses as d on d.id = c.iddomicile 
    left outer join adresses as t on t.id = c.idtravail
     
    left outer join villes as vd on vd.id = d.idville
    left outer join villes as vt on vt.id = t.idville
     
    left outer join pays as pd on pd.id = vd.idpays
    left outer join pays as pt on pt.id = vt.idpays
     
    WHERE r.idemail=c.email
    AND r.idclient = c.id
    AND r.idprofessionel = p.id 
    AND p.idlogo=i.id
    AND c.id=4551
    Merci encore, je n'y serai pas arrivee sans ton aide.

    Je marque le sujet resolu.

    (A bientot pour une nouvelle difficulte );

    Sandy

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

Discussions similaires

  1. [SGBD] mysql+php+recherche+jointure
    Par nizar05 dans le forum Requêtes
    Réponses: 6
    Dernier message: 09/12/2005, 12h10
  2. [MySQL] Requete sous php
    Par cubepiege dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/11/2005, 18h45
  3. [MySQL] Requete SQL PHP
    Par CaptainChoc dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 22/10/2005, 16h13
  4. [Conception] PHP et donnee sur serveur .NET
    Par hellosct1 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/08/2005, 09h53

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