MYSQL - recherche par tableau ? ca existe

  • Auteur de la discussion Auteur de la discussion Zecat
  • Date de début Date de début
WRInaute accro
A ma droite $tab qui contient 4 elements (ou plus) :

aaa
bbbb
ccccc
ddddd

a) et je veux rechercher les 4 fiches correspondantes. Il y a une syntaxe specifique "SELECT BY ARRAY" ou c'ets à moi de fabriquer le requete avec des OR ?

b) Question subsidiaire : aaa bbbb cccc ddddd sont en fait des clefs uniques indexées dans la table : vaut il mieux (à priori) une requete avec des OR ou 4 requete unitaires ? (dans le cas ou pas de réponse positive au point a ...)

edit : a priori j'ai trouve cela :

Code:
<?php
mysql_query("SELECT col FROM une_table WHERE col IN ('".implode("','", array_map('mysql_real_escape_string', $tableau))."')");

// Pour des nombres:
mysql_query("SELECT col FROM une_table WHERE col IN (".implode(',', array_map('intval', $tableau)).")");

Coté perf ca donne quoi ?
 
WRInaute occasionnel
Le code va juste créer une requête pour sélectionner tous les champs correspond.

Avec $foo = array('a','b','c');
Le code va chercher toutes les lignes ou "col" est égal à un des éléments de $foo.
 
WRInaute accro
avec les expressions régulières, tu peux aussi y arriver
Code:
SELECT col FROM une_table WHERE col REGEXP "^(aaa|bbbb|ccccc|ddddd)$";
 
WRInaute accro
Laquelle des deux méthodes est la plus performante à priori ? ou ets ce que ca se vaut : un implode = un regex ?
 
WRInaute accro
en fait il faudra quand même faire le implode, la différence serait entre regexp et in.
A voir le benchmark...
 
Discussions similaires
Haut