Maison > développement back-end > tutoriel php > Comment exécuter une requête SELECT avec une sous-requête NOT IN à l'aide de CodeIgniter Active Record ?

Comment exécuter une requête SELECT avec une sous-requête NOT IN à l'aide de CodeIgniter Active Record ?

Barbara Streisand
Libérer: 2024-11-26 11:35:11
original
537 Les gens l'ont consulté

How to Execute a SELECT Query with a NOT IN Subquery using CodeIgniter Active Record?

CodeIgniter Active Record : Exécution d'une requête SELECT avec une sous-requête NOT IN

Dans ce scénario, vous souhaitez récupérer toutes les lignes du ' table certs qui ne sont pas présents dans la table 'revokace'. La syntaxe SQL conventionnelle pour cette requête serait :

SELECT *
FROM certs
WHERE id NOT IN (SELECT id_cer FROM revokace);
Copier après la connexion

Pour y parvenir en utilisant le modèle Active Record de CodeIgniter, vous pouvez utiliser la méthode '->where()'. Cependant, il est important de gérer les conflits potentiels avec les caractères spéciaux dans votre requête.

Solution :

La méthode '->where()' de CodeIgniter prend facilement en charge la transmission de requêtes personnalisées. chaînes directement dans la base de données. Cela vous permet d'écrire votre requête comme :

$this->db->select('*')
         ->from('certs')
         ->where('`id` NOT IN (SELECT `id_cer` FROM `revokace`)', NULL, FALSE);
Copier après la connexion

Dans cette requête, les arguments 'NULL,FALSE' garantissent que CodeIgniter n'effectue aucun échappement, préservant ainsi l'intégrité de votre sous-requête.

Alternative facultative :

Pour une optimisation plus poussée du code, envisagez d'utiliser la bibliothèque de sous-requêtes CodeIgniter. Il simplifie la création de sous-requêtes en fournissant une interface dédiée. Votre requête utilisant la bibliothèque de sous-requêtes ressemblerait à ceci :

$this->db->select('*')
         ->from('certs');

$sub = $this->subquery->start_subquery('where_in')
                       ->select('id_cer')
                       ->from('revokace');

$this->subquery->end_subquery('id', FALSE);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal