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 :
-
$inest 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)