requête retournant la liste des pays
Posté : 15 avr. 2011, 14:50
Bonjour à tous,
j'ai la requête suivante qui fonctionne bien et qui me donne la liste des adhérents inscrits ( A.valide = 2) :
Cett fois-ci j'aimerais avoir la liste UNIQUE du couple continent/pays des adherents inscrits.
J'ai tenté la requête suivante :
J'ai une liste avec plein de doublons... j'ai une vingtaine de fois le pays france et une fois le pays canada, et je ne vois pas apparaître pays-bas, Malaisie (alors que ce sont des pays qui devraient apparaître...)
J'ai l'impression que le DISTINCT ne fonctionne pas...
Pour info voci la structure de mes tables :
Merci d'avance pour votre aide.
j'ai la requête suivante qui fonctionne bien et qui me donne la liste des adhérents inscrits ( A.valide = 2) :
Code : Tout sélectionner
$sql_dest = sprintf("SELECT A.id_adh, A.id_vil, A.date_ins, B.id_vil, B.id_pay, B.ville_fr, C.id_pay, C.id_con, C.pays_".$lang.", D.cont_".$lang."
FROM flatforswap_adherent A
INNER JOIN flatforswap_ville B ON A.id_vil = B.id_vil
INNER JOIN flatforswap_pays C ON B.id_pay = C.id_pay
INNER JOIN flatforswap_continent D ON D.id_con = C.id_con
WHERE A.valide ='2')");}
J'ai tenté la requête suivante :
Code : Tout sélectionner
$sql_dest = sprintf("SELECT DISTINCT A.id_pay, A.pays_".$lang.", A.id_con, B.id_vil, B.id_pay, B.ville_fr, D.cont_".$lang.", E.id_vil
FROM flatforswap_pays A
INNER JOIN flatforswap_ville B ON A.id_pay = B.id_pay
INNER JOIN flatforswap_continent D ON D.id_con = A.id_con
INNER JOIN flatforswap_adherent E ON E.id_vil = B.id_vil
WHERE E.valide ='2'");
J'ai l'impression que le DISTINCT ne fonctionne pas...
Pour info voci la structure de mes tables :
Code : Tout sélectionner
--
-- Structure de la table `flatforswap_ville`
--
CREATE TABLE `flatforswap_ville` (
`id_vil` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`id_pay` int(10) UNSIGNED NOT NULL DEFAULT '0',
`ville_fr` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id_vil`),
KEY `id_pay` (`id_pay`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 COMMENT='table ville du site FLATFORSWAP' AUTO_INCREMENT=1 ;
--
CREATE TABLE `flatforswap_pays` (
`id_pay` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`id_con` int(10) UNSIGNED NOT NULL DEFAULT '0',
`code` char(2) NOT NULL DEFAULT '',
`pays_fr` varchar(255) NOT NULL DEFAULT '',
`pays_en` varchar(255) DEFAULT NULL,
`pays_es` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id_pay`),
KEY `id_con` (`id_con`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 COMMENT='table pays du site FLATFORSWAP' AUTO_INCREMENT=239 ;
CREATE TABLE `flatforswap_continent` (
`id_con` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`cont_fr` varchar(255) NOT NULL DEFAULT '',
`cont_en` varchar(255) NOT NULL DEFAULT '',
`cont_es` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id_con`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 COMMENT='table continent du site FLATFORSWAP' AUTO_INCREMENT=9 ;
--
CREATE TABLE `flatforswap_adherent` (
`id_adh` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`id_vil` int(10) UNSIGNED NOT NULL DEFAULT '0',
`id_fac` int(11) NOT NULL DEFAULT '0',
`mail` varchar(128) NOT NULL DEFAULT '',
`nom` text NOT NULL,
`prenom` text NOT NULL,
`mdp` varchar(128) NOT NULL DEFAULT '',
`ad_ligne1` varchar(128) NOT NULL DEFAULT '',
`ad_ligne2` varchar(128) NOT NULL DEFAULT '',
`ad_cp` varchar(125) NOT NULL DEFAULT '',
`civilite` text NOT NULL,
`telephone` varchar(125) NOT NULL DEFAULT '',
`ad_ip` varchar(50) DEFAULT NULL,
`mp` enum('a','d') NOT NULL DEFAULT 'a',
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`anglais` enum('0','1') NOT NULL DEFAULT '0',
`français` enum('0','1') NOT NULL DEFAULT '0',
`espagnol` enum('0','1') NOT NULL DEFAULT '0',
`autres` varchar(125) NOT NULL DEFAULT '',
`date_ins` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`valide` enum('0','1','2','3') NOT NULL DEFAULT '0',
`lat` float(10,6) NOT NULL DEFAULT '0.000000',
`lng` float(10,6) NOT NULL DEFAULT '0.000000',
`type` varchar(30) NOT NULL DEFAULT '',
PRIMARY KEY (`id_adh`),
UNIQUE KEY `mail_2` (`mail`),
KEY `mail` (`mail`),
KEY `id_vil` (`id_vil`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 COMMENT='table adherent du site FLATFORSWAP' AUTO_INCREMENT=1 ;
Merci d'avance pour votre aide.