Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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
在PostgreSQL中选择未读文档(连接?)_Sql_Postgresql - Fatal编程技术网

在PostgreSQL中选择未读文档(连接?)

在PostgreSQL中选择未读文档(连接?),sql,postgresql,Sql,Postgresql,我有一个包含用户的PostgreSQL表,一个包含文档的PostgreSQL表,以及一个将用户映射到他们所读文档的表。像这样: 表:用户 ------------ | oid | | username | | ... | ------------ 表:文件 ------------ | oid | | title | | ... | ------------ 表:用户和文件 ------------ | oid | | title

我有一个包含用户的PostgreSQL表,一个包含文档的PostgreSQL表,以及一个将用户映射到他们所读文档的表。像这样:

表:用户

------------
| oid      |
| username |
| ...      |
------------
表:文件

------------
| oid      |
| title    |
| ...      |
------------
表:用户和文件

------------
| oid      |
| title    |
| ...      |
------------
-----------------
| oid           |
| user_oid      |
| document_oid  |
-----------------
每当用户读取文档时,都会将一条记录添加到用户的文档中,其中包含用户id和文档id。这一切都可以正常工作

不过,我想做的是为给定用户随机选择一个未读的文档。我觉得我应该可以通过一个相当简单的连接来实现这一点,但是我不能完全理解查询应该是什么样子


有人能帮忙吗?谢谢。

对于大多数数据,您可以转到用户文档表。例如, 用户读取的文档的查询_oid=?会是

SELECT document_oid
FROM users_documents
WHERE user_oid = ?
但是,您需要丢失的记录

您可以进行外部联接,并在结果中查找空值

SELECT users_documents.document_oid
FROM users_documents
  RIGHT OUTER JOIN documents
    ON users_documents.document_oid = documents.oid AND users_documents.user_oid = ?

“users\u documents.user\u oid=?”必须位于FROM子句的联接中,而不是WHERE子句中,因为它在WHERE子句中不起作用。

谢谢,我已经用user\u oid=?”尝试过了?在WHERE子句中,而不是在FROM子句中!