从连接表中选择 - 不完整的表

时间:2012-12-11 05:47:47

标签: php mysql join

我有两张桌子:'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
");

2 个答案:

答案 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

希望有所帮助。