0

「cat_page」と「pages」の 2 つのテーブルがあります。「cat_page」テーブルは、カテゴリとそこに含まれるページの関連付けです。「ページ」テーブルには、ページに関するデータが含まれています。total_votes が「ページ」内の列であるページでユーザーが投票できるようにしています。

まだ投票されていないカテゴリ内のすべてのページを選択できるクエリを作成しようとしています。私が乗り越えられない部分は、「ページ」に関連付けられた行がない「cat_page」に多くのページがあることです。私が入れると:

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
");
4

2 に答える 2

0

左外部結合を実行すると、存在しない列は NULL になります。

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

あなたの問題を解決するはずです。NULL より大きい値は false です。

于 2012-12-11T05:52:05.660 に答える
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

それが役立つことを願っています。

于 2012-12-11T05:54:31.957 に答える