C'est quoi cette jointure :s

Invité
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 12:46

Bonjour à toutes et à tous,

Je suis aux frontières du réel avec une simple jointure lol

Si je ne suis pas un as du PHP j'ai déjà fait des jointures mais là je sèche...Je ne pige pas mon erreur ou alors je manque de caféine

$q ="select * from clients,factures where clients.num_cli = factures.cli_fac AND dat_fac = $annee order by dat_fac";

Une idée ? (je sais que les champs ne portent pas les mêmes noms mais ca devrait quand même fonctionner)

Je n'ai aucun message d'erreur, rien du tout, tout fonctionne sauf qu'il ne tient absolument pas compte d'une partie de ma requête à savoir la jointure c'est à dire qu'il ne prend en compte que la valeur date postée depuis un formulaire juste auparavant. En clair, tous les clients peuvent avoir les factures de tout le monde du moment que la date correspond...

Par avance merci
Mega :roll:

Invité
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 12:50

$q ="select * from clients,factures where clients.num_cli = factures.cli_fac AND dat_fac = '$annee' order by dat_fac";


met $annee entre '' ca va meiux?

Mammouth du PHP | 768 Messages

28 févr. 2006, 12:54

Si je ne suis pas un as du PHP j'ai déjà fait des jointures mais là je sèche...
Un petit coup de mastique et c'est étanche :boire4:
$q ="select * from clients,factures where clients.num_cli = factures.cli_fac AND dat_fac = $annee order by dat_fac";
déjà select * c'est pas bon.
Une idée ? (je sais que les champs ne portent pas les mêmes noms mais ca devrait quand même fonctionner)
Montre nous la structure de tes deux tables qu'on te fasse une belle jointure
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Invité
Invité n'ayant pas de compte PHPfrance

28 févr. 2006, 12:55

Merci pour la réactivité mais malheureusement ca ne marche toujours pas et je ne vois toujours pas pourquoi :cry:

Une autre idée ?

Mammouth du PHP | 737 Messages

28 févr. 2006, 13:10

Voilà mon extrait de table ^^

CREATE TABLE `clients` (
`id_cli` int(11) NOT NULL auto_increment,
`num_cli` varchar(6) NOT NULL default '',
PRIMARY KEY (`id_cli`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

CREATE TABLE `factures` (
`id_fac` int(11) NOT NULL auto_increment,
`num_fac` varchar(12) NOT NULL default '',
`cli_fac` varchar(6) NOT NULL default '',
PRIMARY KEY (`id_fac`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

J'ai essayé en renommant les champs avec le même intitulé mais sans résultats. J'ai également déclaré dans le SELECT les champs appelés au lieu de * mais toujours rien. J'ai déjà fait des choses un peu plus complexe et d'autres jointures mais je ne vois pas pourquoi dans ce cas ca ne passe pas...

Mammouth du PHP | 768 Messages

28 févr. 2006, 13:18

CREATE TABLE `clients` (
`id_cli` int(11) NOT NULL auto_increment,
`num_cli` varchar(6) NOT NULL default '',
PRIMARY KEY (`id_cli`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

CREATE TABLE `factures` (
`id_fac` int(11) NOT NULL auto_increment,
`num_fac` varchar(12) NOT NULL default '',
`cli_fac` varchar(6) NOT NULL default '',
PRIMARY KEY (`id_fac`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
bon déjà les jointures doivent être faites sur deux champs de même type et de même longueur (id_cli est int(11) et cli_fac est varchar(6) )

A TESTER
$req = "SELECT t2.id_fac, t2.num_fac, t1.num_cli 
FROM clients AS t1, factures AS t2
WHERE t2.cli_fac = t1.id_cli";
je ne vois pas à quel endroit se trouve dat_fac dans la structure de ta table.
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Mammouth du PHP | 737 Messages

28 févr. 2006, 13:25

J'avais oublié dat_fac ^^

CREATE TABLE `factures` (
`id_fac` int(11) NOT NULL auto_increment,
`num_fac` varchar(12) NOT NULL default '',
`cli_fac` varchar(6) NOT NULL default '',
`dat_fac` varchar(4) NOT NULL default '',
PRIMARY KEY (`id_fac`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Mammouth du PHP | 768 Messages

28 févr. 2006, 13:31

Tu stockes dat_fac dans un champ de type varchar(4)
en fait du stocke 0206 (MMAA), c'est ça ?
Si tu souhaites travailler confortablement les dates, je te conseille les stocker dans un champ de type DATE
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Mammouth du PHP | 737 Messages

28 févr. 2006, 13:48

Re,

Je stocke sur 4 caractères l'année uniquement. Je fais des tests en attente d'informations...C'est vraiment spécial car c'est tout con et ça marche pas (bien). Il ne garde en mémoire que l'année postée en omettant la jointure. Il me sort de la table factures tout ce qui correspond à l'année postée et peu lui importe qui est connecté, il s'en fout :shock:

Je continue mes recherches. J'ai trouvé une soluce avec mes sessions mais par pure curiosité je voudrais trouver le pourquoi du comment...