178 votes

Mysql Comme plusieurs valeurs

Salut, j'ai cette requête mysql

J'ai des champs de base de données avec ce contenu

 sports,shopping,pool,pc,games 
shopping,pool,pc,games 
sports,pub,swimming, pool, pc, games   
 

Pourquoi cette requête similaire ne fonctionne-t-elle pas? J'ai besoin des champs avec sport ou pub ou les deux?

 SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
 

TY

387voto

jazkat Points 1579

Manière plus rapide de faire ceci:

 WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
 

est-ce:

 WHERE interests REGEXP 'sports|pub'
 

Trouvé cette solution ici: http://forums.mysql.com/read.php?10,392332,392950#msg-392950

Plus d'informations sur REGEXP ici: http://www.tutorialspoint.com/mysql/mysql-regexps.htm

154voto

Andomar Points 115404

La liste (a,b,c) ne fonctionne qu'avec in . Pour like , vous devez utiliser or :

 WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
 

8voto

Alexis Dufrenoy Points 4872

Votre requête devrait être SELECT * FROM `table` WHERE find_in_set("sports", interests)>0

Ce que je comprends, c’est que vous stockez les intérêts dans l’un des champs de votre table, ce qui est une idée fausse. Vous devez absolument avoir une table "intérêt".

-1voto

user3470857 Points 1

J'avais une implémentation de cela, mais avec deux conditions où, le code ci-dessous n'a renvoyé aucun résultat, mais le code suivant l'a fait une fois que j'avais entouré les conditions semblables de crochets.

  • Code non fonctionnel

     $mysql = mysqli_query($dbc, "SELECT Items.ID, Items.Name, BriefDescription, Description, Price, Quantity, Category, Seller, StartDate, EndDate, ActiveItem, Items.Image, Images.name AS Image_name FROM Items LEFT JOIN Images ON ( Images.ID = Items.Image ) WHERE Category='".$category."' AND Seller LIKE '%".$domain[0]."%' OR Seller LIKE '%".$domain[1]."%' OR Seller LIKE '%".$domain[2]."%'");
     
  • Code de travail

     $mysql = mysqli_query($dbc, "SELECT Items.ID, Items.Name, BriefDescription, Description, Price, Quantity, Category, Seller, StartDate, EndDate, ActiveItem, Items.Image, Images.name AS Image_name FROM Items LEFT JOIN Images ON ( Images.ID = Items.Image ) WHERE Category='".$category."' AND (Seller LIKE '%".$domain[0]."%' OR Seller LIKE '%".$domain[1]."%' OR Seller LIKE '%".$domain[2]."%')");
     

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X