Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript select返回零行,尽管它应该返回一些条目_Javascript_Sql_Postgresql_Rest_Express - Fatal编程技术网

Javascript select返回零行,尽管它应该返回一些条目

Javascript select返回零行,尽管它应该返回一些条目,javascript,sql,postgresql,rest,express,Javascript,Sql,Postgresql,Rest,Express,我有一个postgres数据库,代表一个简单的演示论坛。有两张桌子叫 主题 id | topic_id (the parent topic) | name | description ------------------------------------------------------- uuid | uuid | text | text 和线程 id | topic_id | name | created_at ----------

我有一个postgres数据库,代表一个简单的演示论坛。有两张桌子叫

主题

id   | topic_id (the parent topic) | name | description
-------------------------------------------------------
uuid | uuid                        | text | text
线程

id   | topic_id | name | created_at
-------------------------------------------------------
uuid | uuid     | text | timestamp without timezone
通过使用expressrestapi,我希望获得一个主题的所有信息。我传入它的ID,并希望得到这样的结果

{
    parentTopic: {}, // could be null if no parent is available
    name: "",
    description: "",
    childTopics: [{}, {}, {}],
    threads: [{}, {}, {}] // should be sorted by created_at
}
据我所知,不可能返回这样的结果。但是我试图创建一个查询来获取这些信息,也许我可以稍后用一些代码来映射这些信息

SELECT
    currentTopic.name,
    currentTopic.description,
    parentTopic.id AS parentTopicId,
    parentTopic.name AS parentTopicName,
    parentTopic.description AS parentTopicDescription,
    childTopic.id AS childTopicId,
    childTopic.name AS childTopicName,
    childTopic.description AS childTopicDescription,
    linkedThread.id AS threadId,
    linkedThread.name AS threadName,
    linkedThread.created_at AS threadCreatedAt
FROM
    topic currentTopic
INNER JOIN
    topic parentTopic ON currentTopic.topic_id = parentTopic.id
INNER JOIN
    topic childTopic ON currentTopic.id = childTopic.topic_id
INNER JOIN
    thread linkedThread ON currentTopic.id = linkedThread.topic_id
WHERE
    currentTopic.id = '624aaab6-2d2d-45dc-a425-c2863f05779c'
ORDER BY
    linkedThread.created_at;
执行此操作时(我使用pgAdmin),没有发生错误,但返回0行。我确定,应该有一些条目要检索

这个问题有问题吗?有没有办法改进查询以返回一个可以使用的结果(我上面提到的JS对象)

编辑:

下面是一些线程和主题的测试数据

主题表:

螺纹表:


将内部联接更改为左联接

SELECT
    currentTopic.name,
    currentTopic.description,
    parentTopic.id AS parentTopicId,
    parentTopic.name AS parentTopicName,
    parentTopic.description AS parentTopicDescription,
    childTopic.id AS childTopicId,
    childTopic.name AS childTopicName,
    childTopic.description AS childTopicDescription,
    linkedThread.id AS threadId,
    linkedThread.name AS threadName,
    linkedThread.created_at AS threadCreatedAt
FROM
    topic currentTopic
left JOIN
    topic parentTopic ON currentTopic.topic_id = parentTopic.id
left JOIN
    topic childTopic ON currentTopic.id = childTopic.topic_id
left JOIN
    thread linkedThread ON currentTopic.id = linkedThread.topic_id
WHERE
    currentTopic.id = '624aaab6-2d2d-45dc-a425-c2863f05779c'
ORDER BY
    linkedThread.created_at;

共享您的表数据,否则我们如何知道它为什么不返回行parentTopic的注释“如果没有可用的父项,则可能为null”不准确-查询具有内部联接,因此,如果没有家长,就不会有结果。我更新了我的问题,以提供来自tables@Question3r使用
where
子句输出行,尝试if
topic
。然后,一个接一个地执行
内部联接
,查看哪一个正在过滤出rows@Koen所以你认为一个查询是不可能的?谢谢,我认为这是可行的。有没有办法更改结果,使其更接近所需的javascript对象格式?我想
groupby
可以,但我从来没用过before@Question3r如果您不需要聚合,那么就不需要分组,因此这取决于您的需求