[Résolu] Requête WHERE : ça coince

Requête WHERE : ça coince [Résolu] - PHP - Programmation

Marsh Posté le 06-09-2005 à 21:55:26    

Bonjour,
 
J'aimerais savoir s'il existe une façon de sélectionner plusieurs champs par une requête WHERE sans mentionner plusieurs fois le champ. Bon je ne sais pas comment être plus clair donc un exemple :
 
Ce que je voudrais :

Citation :

SELECT * FROM table WHERE champ1 LIKE machin OR truc OR bidule


 
Ce que je ne veux pas :

Citation :

SELECT * FROM table WHERE champ1 LIKE machin OR champ1 LIKE truc OR champ1 LIKE bidule


 
Voilà je ne ne veux pas répéter champ1 à chaque fois, j'aimerais le mettre une fois au début et ensuite ne mettre que les valeurs. J'ai essayé ceci :

Citation :

SELECT * FROM table WHERE champ1 IN (choix1, choix2, choix3, choix4);


 
mais j'ai une erreur qui me dit que choix1 n'existe pas (j'ai pourtant fait un copier coller)
 
J'espère que j'ai été assez clair  :sarcastic:  
 
Merci pour votre aide.
 
Jarodd


Message édité par superjarodd le 07-09-2005 à 12:59:04
Reply

Marsh Posté le 06-09-2005 à 21:55:26   

Reply

Marsh Posté le 06-09-2005 à 22:02:23    

c'est pas du php mais du sql
sinon la syntaxe sql est la bonne pour faire ce que tu veux
 
EDIT: oublies pas les quotes si c'est des chaines de caractere
 

Code :
  1. select * from tatable where champ1 in ('possibilite1','possibilite2')


Message édité par betsamee le 06-09-2005 à 22:06:42
Reply

Marsh Posté le 06-09-2005 à 22:09:40    

Justement j'avais essayé avec les quotes, mais j'ai cette erreur :  
 

Citation :

#1270 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT), (utf8_general_ci,COERCIBLE), (utf8_general_ci,COERCIBLE) for operation ' IN '


 
J'en ai déduit que ce n'était pas la bonne syntaxe :??:

Reply

Marsh Posté le 06-09-2005 à 22:13:35    

Reply

Marsh Posté le 07-09-2005 à 11:45:28    

Traduction du message d'erreur : tentative de comparer une chaine à un ensemble de chaines ayant des codages différents. ("latin1_swedish_ci" et "utf8_general_ci" )

Reply

Marsh Posté le 07-09-2005 à 12:58:00    

Bon je ne comprend pas pourquoi ni comment, mais j'ai réussi avec le IN :  
 

Citation :

$champs = "champs IN ('champ1', 'champ2', 'champ3')";
 
$requete = "SELECT * FROM table WHERE ($champs)";


 
Il me semble que c'est exactement ce que j'avais écrit hier, mais maintenant je n'ai plus l'erreur... Pourtant je suis persuadé de ne rien avoir changé !
 
Merci pour votre aide  :jap:
 
Edit : pour ceux qui rencontreraient l'erreur n° 1270, vérifiez l'interclassement sur la page d'accueil de MySql : le mien s'était changé en UFT-8, sûrement par une fausse manip, je l'ai remis en latin1_swrdish_ci et ça fonctionne.


Message édité par superjarodd le 07-09-2005 à 14:48:11
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed