Recherche sur plusieurs tables

Petit nouveau ! | 3 Messages

13 mai 2008, 10:45

BOnjour,

Je débute sur PHP/MYSQL et je suis en train de me constituer une petite base de donnée. Mais j'arrive à un problème et ma tête me fait trop mal pour y arriver tout seul.

Je possède plusieurs tables. Dans la première, j'ai des coordonnées de mes contacts, et dans une autre, j'ai les informations concernant les contacts.

Ma requete est simple, je voudrais faire une commande me permettant de selectionner que certains contacts (genre, ceux qui habite dans tel ville et qui ont 30ans).

Pour le moment, j'essaie un truc du style:

$recherche =mysql_query ("SELECT * FROM contact,info WHERE cp = 35400 AND age = 30", $connexion);

table contact contient le champ cp
table info contient le champ age

Si quelqu'un peut m'aiguiller, ce serait gentil.

Merci d'avance

Mammouth du PHP | 1668 Messages

13 mai 2008, 12:24

Tu aurais dût poster dans Débutant PHP et pourquoi tu ne fais pas une jointure ???
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 422 Messages

13 mai 2008, 12:40

Au niveau de la conception de ta base de données, il n'est pas nécessaire de scinder en deux tables des informations qui sont uniques au niveau d'un enregistrement (un code postal est unique, tout comme un âge est unique). C'est même plutôt déconseillé.
L'âge de ton contact est à ranger dans la même table que son nom, son adresse, ...
Par contre, si tu as des informations qui sont multiples pour ton contact (par exemple, les réunions que tu as eu avec lui), il faut créer une deuxième table

Code : Tout sélectionner

contact reunion ----------------------- id_ctc id_reu nom id_ctc prenom ordre_du_jour ... date_reu
Pour accéder à toutes les réunions d'un contact, il faudra donc que tu fasses une jointure

Code : Tout sélectionner

select c.nom, r.ordre_du_jour from contact as c, reunion as r where c.id_ctc = r.id_ctc

Petit nouveau ! | 3 Messages

13 mai 2008, 13:12

Merci pour vos réponses...

Mais j'ai une petite question, comment sélectionnez uniquement les rendez vous qu'il y a eu après tel date ?

Car dans ta solution tu affiches tous les rendez vous.

Eléphant du PHP | 422 Messages

13 mai 2008, 13:47

Code : Tout sélectionner

select c.nom, r.ordre_du_jour from contact as c, reunion as r where c.id_ctc = r.id_ctc and r.date_reu >= to_date('12/05/2008') and c.nom like 'D%' and c.age between 30 and 45 order by r.date_reu desc
tous les rdv à partir du 12 mai, pour les personnes dont l'initiale du nom est D et qui ont entre 30 et 45 ans, classés par ordre chronologique inverse

Petit nouveau ! | 3 Messages

14 mai 2008, 10:46

Merci Caroube, t'es un dieu .. mon nouveau dieu du PHP!! :)

Ca fonctionne d'enfer! ;)