我有两张桌子:'cat_page'和'pages'。 'cat_page'表是类别与其中包含的页面的关联。 'pages'表包含有关页面的数据。我允许用户在页面上投票,其中total_votes是'pages'中的一列。
我正在尝试创建一个查询,在该查询中,我可以选择尚未获得任何投票的类别中的所有页面。我无法理解的部分是'cat_page'中有很多页面在'pages'中没有关联的行。如果我输入:
AND pages.total_votes > 0
进入下面的注释部分,我将只选择pages.total_votes = 0的页面,但不选择任何在'pages'中没有关联页面的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
");
答案 0 :(得分:0)
执行左外连接时,不存在的列将显示为NULL
AND (pages.toatl_votes IS NULL OR pages.total_votes = 0)
应该解决你的问题。大于NULL是错误的。
答案 1 :(得分:0)
我认为你遇到的问题是你在cat_page上使用LEFT JOIN,但你可能应该选择正确的连接。
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
希望有所帮助。