Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1187 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] problème avec la clause IN

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] problème avec la clause IN

n°1297180
josserand_​joss
Posté le 02-02-2006 à 09:57:10  profilanswer
 

Bonjour,
 
Après avoir découvert que MySQL gère trop difficilement les sous-requêtes, j'ai décomposé ma requête en deux. Voici la deuxième :
 

Code :
  1. SELECT numpiece, datepiece
  2. FROM latable
  3. WHERE numpiece IN ('piece2', 'piece3', 'piece6', 'piece24')
  4. AND datepiece BETWEEN '2006/01/01' AND '2006/02/01';


 
Le contenu du IN est le résultat de la 1ère requête, mise en forme par PHP.
Et voilà ce qu'il me lance :
 

Code :
  1. #1271 - Illegal mix of collations for operation ' IN '


 
Dois-je comprendre que MySQL gère également mal les IN, ou bien ai-je fais une erreur invisible à mes yeux ?? Merci de votre aide.
 
Joss

mood
Publicité
Posté le 02-02-2006 à 09:57:10  profilanswer
 

n°1297227
cinocks
Posté le 02-02-2006 à 11:03:26  profilanswer
 

avec une recherche google rapide, on trouve que ce message d'erreur n'est pas nouveau. Et qu'assez souvent c'est un probleme de charset (encodage des caracteres) qui en est la cause.
 
Ca ne veut pas dire que MySql ne sait pas faire de IN.


---------------
MZP est de retour
n°1297232
omega2
Posté le 02-02-2006 à 11:17:38  profilanswer
 

josserand_ joss > Quelle est la version de mysql? C'était quoi ta fameuse requette avec sous requette qui ne marchait pas?
 
Avec mysql5, je fais quasiment chaque semaine des requettes avec des sous requettes et des requettes avec des jointures. On utilise également des requettes avec des "IN" et tout ça marche trés bien.
 
Comme dit cinocks, si tu veux faire un "IN" il faut que les deux côtés du "IN" et toutes les valeurs à droite du "IN" aient le même charset. Pour régler le charset d'un élément, de mémoire, il faut utiliser "COLLATE".

n°1297253
josserand_​joss
Posté le 02-02-2006 à 11:44:58  profilanswer
 

Ma version est le 4.1.9.
 
J'avais en effet bien vu sur Google que ce message n'était pas nouveau... mais j'en ai pas décrypté la raison...
 
Le charset de mes champs est "latin1_general_ci" (ce qui n'est pas le charset par défaut). Faut-il que je remette cette valeur par défaut (ou que j'utilise le COLLATE) ? Ca se joue sur si peu ?
 
Pourriez-vous, si possible, me renseigner sur la manière dont s'utilise le COLLATE avec mon IN ?... parce que j'ai pas vraiment capté.
 
Omega2, pour les sous-requêtes, avec ma version 4, dès que tu imbriques 2 sous-requêtes, le serveur MySQL plante complètement.
Cette requête était du style :
 
SELECT numpiece, datepiece
FROM latable
WHERE numpiece IN (SELECT numpiece FROM autretable WHERE...);
 
avec d'autres sous-requêtes, mais le IN devait pas lui plaire encore.
 
Merci !

n°1297266
omega2
Posté le 02-02-2006 à 12:01:35  profilanswer
 

Pour la branche 4.1, ils en sont à la 4.1.16. Ta requette faisait peut être planter le serveur à cause d'un bug corrigé depuis.
 
Pour le "collate", le mieux, c'est encore de regarder dans la documentation de mysql, c'est comme ça qu'on apprend le mieux et t'y trouveras quelques exemples. :)
 
Pour une documentation en ligne avec moteur de recherche, t'as le site www.mysql.com et également sur www.nexen.net même s'il y a encore quelques problémes sur ce dernier.

n°1297274
josserand_​joss
Posté le 02-02-2006 à 12:11:29  profilanswer
 

Je te remercie pour les infos !!
 
En cas de repépin, je reposte ici. Merci !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] problème avec la clause IN

 

Sujets relatifs
[MySQL] Problème d'indexation FullTextprobléme de popup !!
php problème de date[PHP/MYSQL] création d'un service de blog
petit probleme javascript[JAVA - Débutant] - Probleme premier programme en JAVA
/RESOLU/ problème avec switch... lolProblème de sélecteur ( :hover et compagnie)
probleme affichage image 
Plus de sujets relatifs à : [MySQL] problème avec la clause IN


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR