C'est quoi cette jointure :s

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : C'est quoi cette jointure :s

par Megadeth » 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...

par mario » 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

par Megadeth » 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 ;

par mario » 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.

par Megadeth » 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...

par Invité » 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 ?

Re: C'est quoi cette jointure :s

par mario » 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

par Invité » 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?

C'est quoi cette jointure :s

par Invité » 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: