无法找出我的查询出了什么问题

时间:2020-10-03 17:46:11

标签: sql postgresql join

我想根据基于图书meta关键字的已购买图书找到相似的图书,但是下面的查询返回用户也已购买的图书。我需要带上阿伦特购买的书籍,但根据他的购买量类似。希望那很清楚。

下面是查询以及数据和结果的链接。 https://www.db-fiddle.com/f/tovUePp2WVffXLcuaxmJ8K/3

查询不应该返回以下查询返回的数据。但是它也返回下面的一些数据。

SELECT c.book FROM customers_books c WHERE c.customer = 1

2 个答案:

答案 0 :(得分:2)

能否请您尝试以下查询? 我已将左联接添加到现有查询中,以删除已购买的图书。

SELECT bmk2.book
FROM book_meta_keywords bmk2
INNER JOIN book_meta_keywords bmk1 
                ON  bmk2.meta_keyword = bmk1.meta_keyword
INNER JOIN customers_books cb 
                ON bmk1.book = cb.book
INNER JOIN books b ON b.id = bmk2.book
LEFT JOIN customers_books cbp ON cbp.book = b.id 
                    and cbp.customer = 1
WHERE cb.customer = 1 AND b.status = 'PUBLISHED'
and cbp.book IS NULL
GROUP BY bmk2.book
ORDER BY MAX(b.modified_date) DESC ;

答案 1 :(得分:-1)

如果两个查询的格式相同,则可以简单地排除它们。

有关更多信息,请参见此: https://www.techonthenet.com/postgresql/except.php

相关问题