- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直尝试在 Korma 中执行以下操作但无济于事:
sql:
PREPARE q (int) AS SELECT * FROM post a
WHERE EXISTS
(SELECT parent_id
FROM post_map
WHERE parent_id=a.id AND parent_id=$1);
EXECUTE q(1);
我最好的 Korma 尝试:
(defn children [parent-id] ;; clojure
(if (number? parent-id)
(exec-raw (str
"PREPARE q (int) AS SELECT * FROM post a WHERE EXISTS
(SELECT parent_id FROM post_map WHERE parent_id=a.id AND parent_id=$1);
EXECUTE q(" parent-id ")")
:results)))
这是我不断收到的错误: (我不太理解下面的 ::
运算符:)
Failure to execute query with SQL:
PREPARE q (int) AS SELECT * FROM post a WHERE EXISTS
(SELECT parent_id FROM post_map WHERE parent_id=a.id AND parent_id=$1);
EXECUTE q(1) :: nil
PSQLException:
Message: No results were returned by the query.
SQLState: 02000
Error Code: 0
PSQLException No results were returned by the query. org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery (AbstractJdbc2Statement.java:274)
我认为用查询来做这件事并不奇怪,所以我想知道 Korma 是否不适合我的项目。我只是做错了吗?
更新:这就是我最终所做的(在我放弃 Korma [抱歉 Korma] 之后)。
(defn children [parent-id]
(if (unsigned? parent-id)
(sql/with-connection db
(sql/with-query-results results
[(str "select " field-list ", b.parent_id from post a, post_map b where a.id=b.child_id and a.id in "
"(select child_id from post c, post_map d where c.id=d.parent_id and c.id=?)") parent-id]
(into [] results)))))
最佳答案
Korma 在幕后使用 do-prepared,它只对单个语句有效,同时也会为你准备好它。
这个有效:
;; but isn't it more 'parent' than 'children'?
(defn children-raw [parent-id]
(if (number? parent-id)
(exec-raw [(str
"SELECT * FROM post a WHERE EXISTS
(SELECT parent_id FROM post_map WHERE parent_id=a.id AND parent_id=?)")
[parent-id]]
:results)))
尽管从这个小示例中很难分辨,但我对您的命名/架构感到有些困惑。您的函数称为“childREN”,但使用 EXISTS() 我认为它最多会返回一条记录。此外,它似乎选择了父级,但是通过隐式连接它总是会选择自己?
如果 post_map 是从 id 到 parent_id 的链接,并且您想得到 child ,我会考虑更多:
(defentity post
(entity-fields :id))
(defentity post_map
(entity-fields :id :parent_id))
(defn children-dsl [parent-id]
(if (number? parent-id)
(select post
(where {:id [in (subselect post_map
(fields :id)
(where {:parent_id parent-id}))]}))))
关于postgresql - 使用 Clojure/Korma/Postgres 的带有子选择的准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13097697/
我在 windows 上使用 sqlite3 数据库玩弄 clojure 及其 korma 库。我以 7web 书为例。它介绍了select*函数及其 friend 。 但是使用 fields函数添加
我如何做相当于 SELECT *, id=1 AS calc_column FROM table 在科尔马? (显然,id=1 只是一个简单的例子)。 最佳答案 Korma 有 sqlfn 可以在 f
假设您已经完成了 defdb。我有一个表“items”,它有两个字段,“id”(PK)和“item”。我想设置一个实体,以便每当我选择它时,我只能获得“项目”中的条目。从 documentation
我正在尝试跨多个表(三个加上中间的连接表)进行连接。我认为 korma 正在懒惰地评估最后一次加入。我想要做的是添加一个条件来限制连接中第一个表的结果,但我只对连接中最后一个表中的字段感兴趣。 例如说
我正在尝试使用 korma 创建一个非常简单的 API 用户可以像这样查询数据库: localhost:8080/my_postgres_db/users.json?where[age]=50&lim
我正在尝试将 clojure kORMa 与 compojure 一起使用,webapp 在这里 nepleaks . 首先我添加了 kORMa 依赖 [korma "0.3.0-RC4"] lein
我有一个使用以下架构的数据库表: CREATE TABLE users (id SERIAL PRIMARY KEY, username TEXT UNIQUE NOT NULL, passw
当我在 korma 中调用插入多行时,出现异常... Failure to execute query with SQL: ...snip... SQLException: Message: ne
我在 RESTful API 后面使用 Korma,我突然想到我正在将用户提交的值传递给我的 (insert)来电。 Clojure 中有没有很好的方法来防止 SQL 注入(inject)攻击? Ko
我正在尝试根据我传递给函数的列和值的映射生成 korma 查询条件。 我发现当一个空 map 被传递到 korma 的位置时: (select "things" (where conditions
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我一直尝试在 Korma 中执行以下操作但无济于事: sql: PREPARE q (int) AS SELECT * FROM post a WHERE EXISTS (SE
我有以下架构: CREATE TABLE IF NOT EXISTS art_pieces ( -- Art Data ID SERIAL PRIMARY KEY, title TEXT
我完全不知道从哪里开始为我正在构建的 Clojure 站点获取登录区(为了好玩)。 我看了几个资源,我将在下面发布,无情地复制/粘贴代码,我能得到的最接近的是两种情况之一: 登录页面接受登录,但显示登
我将 Clojure 与 korma 结合使用将 Clojure 映射存储在 Mysql 数据库中,例如存储具有这种结构的映射: (defentity users (table :user)
我正在尝试向 Korma SQL 查询动态添加 WHERE 条件 (-> the-query (where {:archived false}) (add-where-conditio
我正在使用 compojure、cheshire 和 korma(以及 postgre db)来创建休息服务。 我创建了一个包含两个字符串字段(名称和描述)的表,结构如下: (defentity po
我是 sql 的新手,我想在这里遵循这个例子: http://net.tutsplus.com/tutorials/php/a-better-login-system/ 所以问题的要点是, 有允许访问
Postgres 的一些复杂功能使用不属于 SQL 标准的运算符。一个简单的例子是一组 POSIX regular expression运算符(operator);我需要它们包含一个使用单词边界的 w
在 clojure 的 korma 数据库库的文档中,它是这样说的: ;;您还需要数据库的 JDBC 驱动程序。这些很容易找到,如果;;你搜索“my-db jdbc driver maven”。这是
我是一名优秀的程序员,十分优秀!