Pb jointure

yoarf Messages postés 215 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 19 février 2009 - 14 janv. 2007 à 15:42
cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011 - 14 janv. 2007 à 16:45
Bonjour,

Je suis sous phpmyadmin sous hébergeur free (donc mode InnoDb impossible donc obligé d'utiliser des index).

CREATE TABLE `categorie_cp` (
  `lib_cat_cp` varchar(100) collate latin1_general_ci NOT NULL,
  `num_cat_cp` int(2) NOT NULL,
  PRIMARY KEY  (`lib_cat_cp`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

CREATE TABLE `carte_postale` (
  `id_cp` int(4) NOT NULL default '0',
  `fk_lib_cat_cp` varchar(100) NOT NULL default '',
  `date_cp` date NOT NULL default '0000-00-00',
  `ordre` int(4) NOT NULL default '0',
  PRIMARY KEY  (`id_cp`,`fk_lib_cat_cp`),
  KEY `fk_lib_cat_cp` (`fk_lib_cat_cp`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Comme vous pouvez le voir je vais fair une table carte_postale lié avec une catégorie_cp.
Je voudrais faire une jointure pour afficher toutes les infos des deux tables. Cependant je n'y arrive pas.
Faudrais faire qqch du genre : WHERE categorie_cp.lib_cat_cp=carte_postale.fk_lib_cat_cp;

Y.C

10 réponses

cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011
14 janv. 2007 à 15:47
bonjour,

SELECT table INNER JOIN table ON restriction WHERE condition
0
yoarf Messages postés 215 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 19 février 2009
14 janv. 2007 à 15:59
SELECT * FROM categorie_cp INNER JOIN carte_postale ON categorie_cp.lib_cat_cp=carte_postale.fk_lib_cat_cp;

ne fonctionne pas

Je pense que c'est parce que les parties droites ne sont pas égales, mais je ne vois pas comme faire autrement

Y.C
0
cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011
14 janv. 2007 à 16:00
http://www.phpcs.com/auteurdetail.aspx?ID=21489
 SELECT * FROM categorie_cp INNER JOIN carte_postale WHERE categorie_cp.lib_cat_cp=carte_postale.fk_lib_cat_cp;      ???
0
yoarf Messages postés 215 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 19 février 2009
14 janv. 2007 à 16:04
Je mets : SELECT * FROM categorie_cp INNER JOIN carte_postale WHERE categorie_cp.lib_cat_cp=carte_postale.fk_lib_cat_cp;

J'ai l'erreur :
#1267 - Illegal mix of collations (latin1_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='


Y.C
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011
14 janv. 2007 à 16:14
oups, dsl:
SELECT table INNER JOIN table ON condition WHERE restriction (et pas le contraire :$)

Apparamment tu veux retrouver les infos pour une carte précise ?
ça devrait donner:
SELECT * FROM categorie_cp INNER JOIN carte_postale ON categorie_cp.lib_cat_cp=carte_postale.fk_lib_cat_cp
WHERE num_cat_cp= ...
et pour les afficher toutes
WHERE categorie_cp.lib_cat_cp=carte_postale.fk_lib_cat_cp;
0
yoarf Messages postés 215 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 19 février 2009
14 janv. 2007 à 16:31
Je mets :
SELECT * FROM categorie_cp INNER JOIN carte_postale ON categorie_cp.lib_cat_cp=carte_postale.fk_lib_cat_cp WHERE categorie_cp.lib_cat_cp=carte_postale.fk_lib_cat_cp;

Je veux les afficher toutes mais le message suivants apparait :
#1267 - Illegal mix of collations (latin1_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='


Y.C
0
yoarf Messages postés 215 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 19 février 2009
14 janv. 2007 à 16:33
C'est : categorie_cp.lib_cat_cp=carte_postale.fk_lib_cat_cp

qui ne fonctionne pas

Y.C
0
cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011
14 janv. 2007 à 16:36
oui, du fait d'un charset différent...
je ne connais pas la clause COLLATE, mais elle pourrait bien être responsable
0
yoarf Messages postés 215 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 19 février 2009
14 janv. 2007 à 16:38
Le truc que je voudrais savoir c'est "Comment faire des jointures sur les BDD free" (vraiment de la merde ces bases d'ailleurs)

Y.C
0
cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011
14 janv. 2007 à 16:45
tu en as vraiment besoin de ta clause ?
parce que quand tu regardes l'erreur:
#1267 - Illegal mix of collations (latin1_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='

ça ressemble étrangement à:
CHARSET=latin1 COLLATE=latin1_general_ci;
CHARSET=latin1
0
Rejoignez-nous