小编mal*_*lix的帖子

Postgres ltree查询,计算每个树级别上的已连接项

我有3张桌子:

位置,位置描述,其中包含每个位置等的语言以及1用于商店的语言。

位置描述表也将层次结构保存在ltree路径字段中,如下所示:

city.district1  
city.district1.area1  
city.district1.area2  
...  
city.district2.area1    
city.district2.area2  
...  
city(n).district(n).area(n) 
Run Code Online (Sandbox Code Playgroud)

STORE表包含一个外键location_id,以引用其所属的位置。

因此,我想做的是获取带有每个节点的存储数的树,并按此树排序。

例如:

city.district3 (10)   
city.district3.area2 (6)  
city.district3.area1 (4)  
...  
city.district2 (9)    
city.district2.area1 (5)    
city.district2.area3 (3)  
city.district2.area2 (1)    
...
city.districtN (5)  
city.districtN.area2 (3)  
city.districtN.area1 (2)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我所做的只是获取树和计数(存储),但仅针对区域而非区域,并且没有想要的顺序。

SELECT locdesc.title, COUNT(store.store_id) as totalStores, locdesc.path, nlevel(locdesc.path) as lvl
FROM st_location loc
    JOIN st_location_desc locdesc ON locdesc.location_id = loc.location_id
    LEFT JOIN st_store store ON store.location_id = loc.location_id
WHERE path ~ 'london.*{1,2}'
GROUP BY locdesc.path, locdesc.title
ORDER BY path
Run Code Online (Sandbox Code Playgroud)

================================================== =============================== EDIT1:

更新了我的查询,我得到了父母和孩子的总计记录(我相信有一种更有效的方法)。我仍然缺少订单:

SELECT …
Run Code Online (Sandbox Code Playgroud)

sql postgresql ltree postgresql-9.3

5
推荐指数
1
解决办法
1239
查看次数

正则表达式 - preg_match拉丁语和希腊语字符

我正在尝试为任何给定的字符串创建正则表达式.

目标:删除所有不是" 拉丁语 "或" 小写希腊语 "或" 数字 "的字符.

到目前为止我做了什么: [^a-z0-9]
这适用于拉丁字符.

当我尝试这个:[^a-z0-9?-?]没有运气.Works但是没有留下任何其他符号,比如!!#$%@%#$ @,`

在regexp方面,我的知识有限.任何帮助将非常感激!

编辑:
下面发布的是匹配指定字符的函数,并创建一个slug,用破折号作为分隔符:

        $q_separator = preg_quote('-');
        $trans = array(
            '&.+?;'                 => '',
            '[^a-z0-9 -]'           => '',
            '\s+'                   => $separator,
            '('.$q_separator.')+'   => $separator
        );

        $str = strip_tags($str);

        foreach ($trans as $key => $val){
            $str = preg_replace("#".$key."#i", $val, $str);
        }

        if ($lowercase === TRUE){
            $str = strtolower($str);
        }

        return trim($str, '-');  
Run Code Online (Sandbox Code Playgroud)

所以,如果字符串是:OnCE on tIME!MEXIco中的#%@ $$
使用该函数输出将是:一次一次墨西哥

这工作正常,但我希望preg_match也排除希腊字符.

php regex preg-replace preg-match

3
推荐指数
1
解决办法
5113
查看次数

复制数组中的第一个元素并替换最后一个元素

我有一个x值数组的javascript数组.

如何用第一个替换该数组中的最后一个元素?(不切换位置但删除最后一个数组并将第一个数组放在最后一个位置)

例:

初始阵列:[9,14,23,12,1]最终数组:[9,14,23,12,9]

javascript jquery

-1
推荐指数
1
解决办法
1424
查看次数