[MySQL] MySQL 5 est fou ou c'est moi ?

35 réponses
AuteurMessage

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 23/01/2006 à 15:23

Je poste ici rapidement pour éviter à certaines de s'arracher les cheveux comme je l'ai fais lros du passage à mysql 5.

Si vous utilisez comme je l'utilisais des combinaisons de JOIN sous entendu (table1.id=table2.id) et des LEFT JOIN - ce qui passe très bien sous mysql 4 - et bien ça ne passera plus sous mysql 5.

Vous devez donc utiliser ceci :


SELECT id_rubrique, sondages_rub.rubrique, sondages_question.id_question, question, statut, pseudo, count(id_choix)
FROM sondages_question
JOIN sondages_rub ON (id_rubrique=sondages_rub.id)
JOIN membre ON (id_membre=membre.id)
LEFT JOIN sondages_choix ON (sondages_question.id_question=sondages_choix.id_question)
WHERE statut ='3' GROUP BY sondages_question.id_question ORDER BY sondages_question.id_question ASC


au lieu de ceci par exemple :

SELECT id_rubrique, sondages_rub.rubrique, sondages_question.id_question, question, statut, pseudo, count(id_choix)
FROM sondages_question, sondages_rub, membre
LEFT JOIN sondages_choix ON (sondages_question.id_question=sondages_choix.id_question)
WHERE id_rubrique=sondages_rub.id AND id_membre=membre.id AND statut ='3' GROUP BY sondages_question.id_question ORDER BY sondages_question.id_question ASC


Certains utilisaient peut être déjà JOIN, mais bon voilà on pourra pas dire que j'aurai pas prévenu les autres ;-)

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 23/01/2006 à 15:33

moi ca fonctionne bien sous MySQL 5 le LEFT JOIN comme tu faisais, mais sans parenthèse par contre. Jamais mis de parenthèses là.

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 23/01/2006 à 16:54

Oui le LEFT JOIN tout seul fonctionne, avec ou sans parenthèses, mais si tu le cumules avec une jointure naturelle type table1.id=table2.id, bah ça marche plus, faut donc mettre JOIN à ce moment là.
Wala

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 23/01/2006 à 17:05

je comprends pas
Ta requetes exacte sans les parenthèse fonctionne chez moi

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 23/01/2006 à 17:30

De laquelle tu parles Rano ? La deuxième ?
Car la première fonctionne oui, c'est la bonne, mais la deuxième il me fait "#1054 - Unknown column 'sondages_question.id_question' in 'on clause' " alors que la colonne existe...

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 23/01/2006 à 17:33

Y a vraiment un interet a passer en MySQL 5 ? Je dois dire que la V4 avec l'apparition du cache me suffit largmeent pour le moment.
Au niveau performance ou fonctionnalités ?

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 23/01/2006 à 17:39

Moi j'ai comme qui dirait pas eu le choix
Mais j'aimais très bien la 3.21 hein ! Elle au moins pas de soucis d'encodage & co ;-)

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 23/01/2006 à 18:07

Et concernant l'explosion du forum, il est pa spossible de faire quelque chose ? Parce que meme les ascensseurs ne suffisent pas, une partie du texte est cachée, et je ne trouve aucun moyen de pouvoir tout lire

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 23/01/2006 à 18:20

Tu es sous safari ?

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 23/01/2006 à 18:55

IE 6 sous windows XP, le gros standard quoi

Tu veux un shoot ?

erwinol | Erwin
Membre

Photo de erwinol

Inscrit le : 09/05/2005

# Le 23/01/2006 à 22:07

Telaxo a dit :
et je ne trouve aucun moyen de pouvoir tout lire


Il y a pourtant des solutions :
- coper/coller dans un fichier texte
- afficher la source de la page

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 23/01/2006 à 23:24

Oui, enfin j'ai quand meme mieux a faire des fois

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 23/01/2006 à 23:49

Julgates a dit :
Oui le LEFT JOIN tout seul fonctionne, avec ou sans parenthèses, mais si tu le cumules avec une jointure naturelle type table1.id=table2.id, bah ça marche plus, faut donc mettre JOIN à ce moment là.
Wala


La deuxième, celle que tu as dit qui ne fonctionnait pas.

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 24/01/2006 à 09:45

Bizarre tout ça, et ta version de SQL exactement ?
Nous c'est MySQL 5.0.16

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 24/01/2006 à 09:50

#

Incompatible change: Beginning with MySQL 5.0.12, natural joins and joins with USING, including outer join variants, are processed according to the SQL:2003 standard. The changes include elimination of redundant output columns for NATURAL joins and joins specified with a USING clause and proper ordering of output columns. The precedence of the comma operator also now is lower compared to JOIN.

These changes make MySQL more compliant with standard SQL. However, they can result in different output columns for some joins. Also, some queries that appeared to work correctly prior to 5.0.12 must be rewritten to comply with the standard. For details about the scope of the changes and examples that show what query rewrites are necessary, see Section 13.2.7.1, “JOIN Syntax”.

et wala je pense que c'est ça

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 05/06/2006 à 10:48

En fait suffit de mettre les tables du from entre parentheses :


SELECT id_rubrique, sondages_rub.rubrique, sondages_question.id_question, question, statut, pseudo, count(id_choix)

FROM (sondages_question, sondages_rub, membre)

LEFT JOIN sondages_choix ON (sondages_question.id_question=sondages_choix.id_question)

WHERE id_rubrique=sondages_rub.id AND id_membre=membre.id AND statut ='3' GROUP BY sondages_question.id_question ORDER BY sondages_question.id_question ASC


Ou alors, specifier, dans le my.cnf :
sql-mode = MYSQL40

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 6:27:45 | Généré en 13.4ms | Contacts | Mentions légales |