0

我有两个表:“cat_page”和“pages”。“cat_page”表是类别和其中包含的页面的关联。“页面”表包含有关页面的数据。我允许用户在页面上投票,其中 total_votes 是“页面”中的一列。

我正在尝试创建一个查询,我可以在其中选择一个类别中还没有任何投票的所有页面。我无法超越的部分是“cat_page”中有很多页面在“pages”中没有关联的行。如果我输入:

AND pages.total_votes > 0

在下面的注释部分中,我将只选择 pages.total_votes = 0 的页面,而不是任何 cat_page.page 在“页面”中没有关联页面的页面。

任何帮助表示赞赏。

$data = array($lastcat);
$STH = $DBH->prepare("SELECT cat_page.page FROM cat_page
LEFT JOIN pages ON cat_page.page = pages.page
WHERE cat_page.cat_id = ?
/// unsure what to do here
");
4

2 回答 2

0

当您执行左外连接时,不存在的列将出现 NULL

AND (pages.toatl_votes IS NULL OR pages.total_votes = 0)

应该可以解决您的问题。大于 NULL 为假。

于 2012-12-11T05:52:05.660 回答
0

我认为您遇到的问题是您在 cat_page 上使用了左连接,但您可能应该选择右连接。

SELECT cat_page.page FROM cat_page
RIGHT JOIN pages ON cat_page.page = pages.page
WHERE cat_page.cat_id = ? and page.total_votes = 0

希望有帮助。

于 2012-12-11T05:54:31.957 回答