小编Erw*_*ter的帖子

如何按子查询中的非聚合列排序?

我正在尝试在 Hasura 中创建一个函数来查询用户附近的帖子。我得到了那个工作,但我也想订购这些帖子。我收到一个 Postgres 错误,内容为:

“postgres-error : 列“b.Volume”必须出现在 GROUP BY 子句中或用于聚合函数中”

我是 Hasura 和 Postgres 的新手,我不确定您是否被允许做这样的事情。这是我的代码:

CREATE OR REPLACE FUNCTION public.search_posts_near_user(id uuid, distance_kms integer, volume integer)
 RETURNS SETOF user_posts
 LANGUAGE sql
 STABLE
AS $function$
  SELECT  A.id, A.location,
  (SELECT json_agg(row_to_json(B)) FROM "Posts" B
   WHERE (
     ST_Distance(
       ST_Transform(B.location::Geometry, 3857),
       ST_Transform(A.location::Geometry, 3857)
     ) /1000) < distance_kms AND B."Volume" < volume
    ORDER BY B."Volume" Desc
   ) AS nearby_Posts
  FROM users A where A.id = id
$function$
Run Code Online (Sandbox Code Playgroud)

sql postgresql sql-order-by knn hasura

0
推荐指数
1
解决办法
56
查看次数

优化存在多个 JOIN LATERAL 时的慢查询

这是将 SUM group by 添加到 COUNT DISTINCT 查询中的后续优化(尽管进行了一些优化和联接简化)。

我想知道是否可以优化以下需要完成的PostgreSQL 13.1查询130322.2ms。通常,如果只有一个JOIN LATERAL存在,它会在几毫秒内完成。

我最迷失的是,每个子查询JOIN LATERAL都有一个ON基于其自己的子查询分数的条件,我如何优化查询,可能减少子查询的数量JOIN LATERAL,但仍然得到相同的结果。

从我看来,当条件添加到代替OR中的某些 WHERE时,它似乎会变慢。看:JOIN LATERALAND

SELECT count(*)
FROM subscriptions q
JOIN LATERAL (
      SELECT
        SUM(ts.score) AS sum_score
      FROM
        quiz_answers qa
        JOIN answers a ON a.id = qa.answer_id
        JOIN tag_scores ts ON ts.answer_id = a.id
      WHERE
        qa.quiz_id = q.quiz_id
        AND ts.tag_id = 21
    ) AS q62958 ON q62958.sum_score <= 1
JOIN LATERAL …
Run Code Online (Sandbox Code Playgroud)

sql postgresql postgresql-performance lateral-join

0
推荐指数
1
解决办法
2955
查看次数

首次尝试PHP IF Else语句

我正在学习PHP并尝试if .. else更好地理解语句,所以我正在创建一个小测验.但是,我遇到了一个问题,我似乎不知道问题是什么.我的问题是每当我输入输入区域的年龄$yes时,即使我输入了错误的年龄,它也会每次都给我变量.

这是我到目前为止的代码:
我的html文件:

<form action="questions.php" method="post">
<p>How old is Kenny?<input></input>
<input type="submit" name="age" value="Submit"/>
</p></form>
Run Code Online (Sandbox Code Playgroud)

我的php文件:

<?php
$age = 25;
$yes = "Awesome! Congrats!";
$no = "haha try again";

if ($age == 25){
    echo "$yes";
}else{
 echo "$no";
}
?>
Run Code Online (Sandbox Code Playgroud)

html php if-statement

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

查找与所有给定标签相关的电影

我不知道如何表达我的 SQL 问题,所以我会输入一个预期的场景。

电影ID 标签ID
1 1
1 3
1 5
2 1
2 2
2 3
3 1
3 3
3 5
3 7

我想选择至少与所有这些标签有标签关系的 movieId [1,3,5]
所以预期的输出是1,3.

sql postgresql relational-division

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

如何使用postgresql SIMILAR TO和变量

我有一个函数,使我需要使用SIMILAR TO带有变量的表达式的选择,我不知道如何做到这一点.这是代码:

DECLARE pckg_data cl_data;
DECLARE contacts contacts_reg%ROWTYPE;
DECLARE sim_name varchar;
 BEGIN
SELECT client_reg._name, 
       client_reg.last_name, 
       client_reg.id_card, 
       client_reg.address
INTO pckg_data
FROM client_reg WHERE(client_reg._name = (cl_name ||' '|| cl_lastname));
RETURN NEXT pckg_data;

SELECT ('%'||cl_name || ' ' || cl_lastname ||'%') INTO sim_name;

FOR contacts IN SELECT contacts_reg.id 
FROM contacts_reg, contactscli_asc, client_reg
WHERE(contacts_reg._name SIMILAR TO sim_name) LOOP
    SELECT client_reg._name, client_reg.last_name, client_reg.id_card,
                   client_reg.address, client_reg.id
    INTO pckg_data
    FROM client_reg, contactscli_asc WHERE(contactscli_asc.contact = contacts.id 
    AND client_reg.id = contactscli_asc.client);
END LOOP;

END;
Run Code Online (Sandbox Code Playgroud)

postgresql plpgsql pattern-matching

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

通过JSON返回HTML不起作用

我在PHP中创建了一个包含大量HTML的表.创建之后,我将其作为JSON字符串回显如下:

echo json_encode($array['table']); 
Run Code Online (Sandbox Code Playgroud)

然后我使用jQuery.parseJSON(returnString);并尝试将其附加到div.这只有在我返回一个字符串时才有效.当我发送HTML时它不起作用(在这种情况下根本没有返回任何内容).

谁能告诉我出了什么问题?\ / " '在将符号发送到jQuery之前,是否需要使用某些函数来解析符号?

编辑:

$arr['table']看起来像这样:

$arr['table'] = "<tr class=\"{$id}\">lalalal</tr>"
Run Code Online (Sandbox Code Playgroud)

我的JSON看起来像这样:

\n\t\t\t\t\t</div>\n\t\t\t\t\tfcds\n\t\t\t\t\t</center>\
Run Code Online (Sandbox Code Playgroud)

javascript php jquery json

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