Ich bin versucht, eine Unterabfrage mit dem CLSQL zu erstellen: select Funktion:Unterabfragen mit Auswahlfunktion in CLSQL
CL-USER> (select [books.bookid]
:from [books]
:where
(sql-in [books.bookid]
(select [bookid]
:from [bookauthors]
:where
(sql-= [bookauthors.authorid] 120))))
;; 2015-03-07T06:37:08 /books/ => SELECT BOOKID FROM BOOKAUTHORS WHERE (BOOKAUTHORS.AUTHORID = 120)
;; 2015-03-07T06:37:08 /books/ => SELECT BOOKS.BOOKID FROM BOOKS WHERE (BOOKS.BOOKID IN ((157)))
((157))
("bookid")
Es funktioniert, aber statt eine Abfrage mit einer Unter select-Klausel zu erzeugen, CLSQL läuft zwei Abfragen. Dies wird nicht so effizient sein, wie das Postgresql-Backend das ganze Ding behandeln lässt.
CL-USER> (clsql-sys:db-type-has-subqueries? :postgresql)
T
Offensichtlich unterstützt der Postgresql-Connector Unterabfragen. Gibt es eine Möglichkeit, die select-Funktion zu generieren?
Verwenden Sie (SQL-Abfrage ...) anstelle von [wählen ...] if sql -Reader-Syntax ist nicht aktiviert. – BnMcGn