Heim > Backend-Entwicklung > PHP-Tutorial > Wie führe ich eine SELECT-Abfrage mit einer NOT IN-Unterabfrage mit CodeIgniter Active Record aus?

Wie führe ich eine SELECT-Abfrage mit einer NOT IN-Unterabfrage mit CodeIgniter Active Record aus?

Barbara Streisand
Freigeben: 2024-11-26 11:35:11
Original
463 Leute haben es durchsucht

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

CodeIgniter Active Record: Ausführen einer SELECT-Abfrage mit einer NOT IN-Unterabfrage

In diesem Szenario möchten Sie alle Zeilen aus der ' abrufen. certs“-Tabelle, die nicht in der „revokace“-Tabelle vorhanden sind. Die herkömmliche SQL-Syntax für diese Abfrage wäre:

SELECT *
FROM certs
WHERE id NOT IN (SELECT id_cer FROM revokace);
Nach dem Login kopieren

Um dies mit dem Active Record-Muster von CodeIgniter zu erreichen, können Sie die Methode „->where()“ verwenden. Es ist jedoch wichtig, potenzielle Konflikte mit Sonderzeichen in Ihrer Abfrage zu behandeln.

Lösung:

Die Methode „->where()“ von CodeIgniter unterstützt bequem die Übergabe benutzerdefinierter Abfragen Zeichenfolgen direkt in die Datenbank. Dies ermöglicht Ihnen, Ihre Abfrage wie folgt zu schreiben:

$this->db->select('*')
         ->from('certs')
         ->where('`id` NOT IN (SELECT `id_cer` FROM `revokace`)', NULL, FALSE);
Nach dem Login kopieren

In dieser Abfrage stellen die „NULL,FALSE“-Argumente sicher, dass CodeIgniter kein Escape ausführt, wodurch die Integrität Ihrer Unterabfrage gewahrt bleibt.

Optionale Alternative:

Zur weiteren Codeoptimierung sollten Sie die Verwendung des CodeIgniter in Betracht ziehen Unterabfragebibliothek. Es vereinfacht die Erstellung von Unterabfragen durch die Bereitstellung einer dedizierten Schnittstelle. Ihre Abfrage mithilfe der Unterabfragebibliothek würde wie folgt aussehen:

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

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

$this->subquery->end_subquery('id', FALSE);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie führe ich eine SELECT-Abfrage mit einer NOT IN-Unterabfrage mit CodeIgniter Active Record aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage