Page 1 sur 1

deux datas issus du mm champ

Posté : 28 juil. 2012, 13:45
par Cypher_PHP
Bonjour

je n'arrive pas à récupérer un autre data de la même table
par ex, j'essaie de faire apparaître un club recevant (variable
recevant_id) opposant au club visiteur (variable visiteur_id) dans un
match
je suis sûr que la requête n'est pas bonne ...
merci beaucoup de m'aider

voici la requête sql
SELECT matches.id, date_debut, date_fin, sports.title AS sport,
clubs.title AS recevant, clubs.title AS visiteur, competitions.title
AS competition
FROM matches
INNER JOIN sports ON sports.id = matches.sport_id
INNER JOIN clubs ON clubs.id = matches.recevant_id
INNER JOIN clubs ON clubs.id = matches.visiteur_id 
INNER JOIN competitions ON competitions.id = matches.competition_id
cette requête va provoquer un message d'erreur: Not unique table/alias:'clubs'
elle contient deux champs presque identiques : clubs.title

CREATE TABLE IF NOT EXISTS `matches` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `recevant_id` int(3) NOT NULL,
  `visiteur_id` int(3) NOT NULL,
  `competition_id` int(11) NOT NULL,
  `sport_id` int(2) NOT NULL,
  `lieu_id` varchar(255) NOT NULL,
  `date_debut` datetime NOT NULL,
  `date_fin` datetime NOT NULL,
  `description` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
CREATE TABLE IF NOT EXISTS `clubs` (
  `id` int(3) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `sigle` varchar(255) NOT NULL,
  `description` varchar(255) NOT NULL,
  `date_fondation` date NOT NULL,
  `date_created` datetime NOT NULL,
  `date_modified` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
<td class="center "><?php echo $row['recevant'];?></td>
<td class=" center"><?php echo $row['visiteur'];?></td>
bon week end

Re: deux datas issus du mm champ

Posté : 28 juil. 2012, 14:31
par xTG
Tu fais une jointure sur la même table, donc il ne sait pas laquelle choisir entre les deux, utilises des alias :
SELECT matches.id, date_debut, date_fin, sports.title AS sport,
clubs1.title AS recevant, clubs.title AS visiteur, competitions.title
AS competition
FROM matches
INNER JOIN sports ON sports.id = matches.sport_id
INNER JOIN clubs AS clubs1 ON clubs1.id = matches.recevant_id
INNER JOIN clubs AS clubs2 ON clubs2.id = matches.visiteur_id
INNER JOIN competitions ON competitions.id = matches.competition_id

Re: deux datas issus du mm champ

Posté : 28 juil. 2012, 14:42
par Cypher_PHP
ca fonctionne
je ne savais pas qu'on pourrait aussi utiliser des alias dans la jointure INNER JOIN

merci beaucoup
génial

bonnes vacances