La fonction sql_in_select()
effectue un sql_in
sur le résultat d’un sql_select
.
Elle prend les mêmes arguments que sql_select
avec un premier en plus :
-
$in
est le nom de la colonne sur laquelle s’appliquera leIN
, -
$select
, -
$from
, -
$where
, -
$groupby
, -
$orderby
, -
$limit
, -
$having
, -
$serveur
, -
$option
.
On peut l’exploiter ainsi :
$where = sql_in_select("colonne", "colonne", "tables", "id_parent = $id_parent"));
// $where : colonne IN (3, 5, 7)
if ($res = sql_select('colonne', 'autre_table', $where)) {
// ...
}
Cette fonction actuellement calcule les valeurs à intégrer dans le IN
et ne crée donc pas une sous-requête. Dans l’avenir, elle sera peut être modifiée : si le gestionnaire de base de données utilisé accepte les sous-requêtes, alors c’est cela qui serait retourné de préférence, de sorte qu’on obtiendrait d’équivalent de :
$where = sql_in("colonne", sql_get_select( "colonne", "tables", "id_parent = $id_parent"));
// $where : colonne IN (SELECT colonne FROM tables WHERE id_parent=3)