mysql passage de la version 4.x à la 5.0

Répondre
JuTs
le 10/07/2006 à 19:08
JuTs
Salut

En vue d'une éventuelle mise à jour de mysql chez mon hébergeur, je fais des test en local. J'ai une requête (voir ci-dessous) qui passe parfaitement avec mysql 4.x mais pas avec mysql 5.0


SELECT CONCAT( debut, ' - ', fin, ', ', SUBSTRING( p1.date, 9, 2 ) , '/', SUBSTRING( p1.date, 6, 2 ) , '/', SUBSTRING( p1.date, 1, 4 ) , ' ', SUBSTRING( p1.date, 12, 2 ) , ':', SUBSTRING( p1.date, 15, 2 ) , ', ', clubHome.club, ' - ', clubAway.club ) , p1.id_programme
FROM programme AS p1, programme AS p2
LEFT OUTER JOIN clubs AS clubHome ON clubHome.id_clubs = p1.id_clubs
LEFT OUTER JOIN clubs AS clubAway ON clubAway.id_clubs = p2.id_clubs
LEFT OUTER JOIN saisons AS s ON s.id_saisons = p1.id_saisons
WHERE p1.id_programme = p2.id_programme
AND p1.home =1
AND p2.home =0
AND p1.buts = -1
AND p2.buts = -1
ORDER BY p1.date
LIMIT 0 , 30


l'erreur est la suivante :

MySQL a répondu:Documentation
#1054 - Unknown column 'p1.id_clubs' in 'on clause'
JuTs
LupusMic
le 11/07/2006 à 08:26
LupusMic
Tu peux nous donner le create de la table ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
JuTs
le 11/07/2006 à 10:49
JuTs
CREATE TABLE `programme` (
`id_programme` smallint(5) unsigned NOT NULL default '0',
`id_saisons` smallint(2) unsigned NOT NULL default '0',
`id_equipes` tinyint(1) unsigned NOT NULL default '0',
`id_types_groupe` tinyint(1) unsigned NOT NULL default '0',
`id_groupes` smallint(4) unsigned NOT NULL default '0',
`id_clubs` int(10) unsigned NOT NULL default '0',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
`lieu` varchar(30) NOT NULL default '',
`home` tinyint(1) unsigned NOT NULL default '0',
`buts` tinyint(2) NOT NULL default '-1',
PRIMARY KEY (`id_programme`,`id_saisons`,`id_equipes`,`id_types_groupe`,`id_groupes`,`id_clubs`)
)
JuTs
JuTs
le 11/07/2006 à 10:50
JuTs
la structure de mes tables ainsi que les données proviennent d'un dump d'une base sous mysql 4.x que j'ai ensuite réintroduit dans une base sous mysql 5.0.
JuTs
LA GLOBULE
le 14/07/2006 à 19:14
LA GLOBULE
Le message d'erreur est simple : #1054 - Unknown column 'p1.id_clubs' in 'on clause'

le champ id_clubs n'existe pas.
JuTs
le 15/07/2006 à 01:02
JuTs
si, justement (regarde mon CREATE TABLE). Et puis comme je l'ai indiqué, aucun problème sous mysql 4.
JuTs
LA GLOBULE
le 15/07/2006 à 10:56
LA GLOBULE
Es tu sur que la table que tu attaques correspond bien au create que tu nous montre ?

Sinon, donne nous aussi les structures de tes tables clubs et saisons.
JuTs
le 15/07/2006 à 13:26
JuTs
oui, le create que j'ai indiqué provient d'un dump de ma base obtenu depuis phpMyAdmin
JuTs
JuTs
le 15/07/2006 à 13:40
JuTs
Je progresse apparement c'est la ligne
FROM programme AS p1, programme AS p2

que mysql n'aime pas. en particulier la virgule.

J'ai essayé un requête plus simple :
SELECT * FROM programme AS p1, programme AS p2
LEFT OUTER JOIN clubs AS clubHome ON clubHome.id_clubs = p1.id_clubs

mais ça ne marche pas non plus

en revanche avec
SELECT * FROM programme AS p2, programme AS p1
LEFT OUTER JOIN clubs AS clubHome ON clubHome.id_clubs = p1.id_clubs

ça marche.
Apparement seul le dernier alias (p1 dans ce dernier exemple) est pris en compte. Pourquoi, je n'en sais rien
JuTs
Répondre
LoadingChargement en cours