首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义函数:7错误:操作符不存在: public.ltree public.< public.ltree[]

未定义函数:7错误:操作符不存在: public.ltree public.< public.ltree[]
EN

Stack Overflow用户
提问于 2018-12-13 14:07:25
回答 1查看 596关注 0票数 2

当我使用来自ltreePostgreSQL时,我在PHP中遇到了一个问题。我在SQL中这样做:

代码语言:javascript
复制
SELECT * FROM tabla t
WHERE t.parent_path <@ (
    select array_agg(t1.parent_path)
    from tabla t1
    where t1.id in (1000035, 1000045, 1000055, 1000065)
)

我在phpmyadmin中运行这个查询,它运行得很好,但是当我复制和粘贴时,它在PHP中不起作用。我做了一些研究,发现在PHP中,我需要分别替换"<@" and "@>" for "OPERATOR(public.<)" and "OPERATOR(public.>)"

我使用简单的ltree查询在php中测试它,如下所示:

代码语言:javascript
复制
$sql = "SELECT * FROM tabla t
        WHERE t.parent_path OPERATOR(public.<) (
            select t1.parent_path
            from tabla t1
            where t1.id in = 1000035
        )";
$conn = Zend_Registry::get('conexion');
$respdata = $conn->execute($sql);
return $respdata->fetchAll(PDO::FETCH_ASSOC);

它运行得很好,但问题是,在我想要执行的真正查询中,左边有一个ltree,另一侧有一个ltree[],当我使用"OPERATOR(public.<)“时,它会给出以下错误:

未定义函数:7错误:运算符不存在: public.ltree public.< public.ltree[]

这就是我想做的.

代码语言:javascript
复制
$sql = "SELECT * FROM tabla t
        WHERE t.parent_path OPERATOR(public.<) (
            select array_agg(t1.parent_path)
            from tabla t1
               WHERE t1.id IN (1000035, 1000045, 1000055, 1000065)
        )";
$conn = Zend_Registry::get('conexion');
$respdata = $conn->execute($sql);
return $respdata->fetchAll(PDO::FETCH_ASSOC);

任何建议..。tks。对不起,如果我的英语不好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-13 15:24:52

好吧,我向IMSoP说我找到了答案。

更改

代码语言:javascript
复制
OPERATOR(public.<) 

代码语言:javascript
复制
OPERATOR(public.<@)

很多Tks。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53763703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档