エラーはクエリの一部のみを示していますが、誰かが私が犯した間違いを見ることができますか?
私が欲しいのは、タグに基づいてエントリを取得することです。3つのテーブル、nv_entries、nv_tags、およびnv_imagesがあります。タグがnv_tagsテーブルにある場合は、そのテーブルのentrie_idを使用して、nv_entriesとnv_imagesからコンテンツを取得する必要があります。
テーブルは次のようになります。
nv_entries:
id - title - year - etc..
nv_tags:
id - entrieid - tag
nv_images:
id - entrieid - source
クエリに失敗しました:SQL構文にエラーがあります。1行目の「GROUPBYnv_entriesJOIN ON nv_entries.id = nv_tags.entrie_id AND nv_tags.tag IN」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。
以下のスクリプトで生成されるクエリは、次のようにエコーされます。
GROUP BY nv_entries JOIN ON nv_entries.id = nv_tags.entrie_id AND nv_tags.tag IN ('tree','green') HAVING COUNT(DISTINCT nv_tags.tag) = 2
これはスクリプト(一部)です:
for ($i = 0; $i < count($tags); $i++) {
$tags[$i] = trim($tags[$i]);
}
$query = "GROUP BY nv_entries JOIN ON nv_entries.id = nv_tags.entrie_id AND nv_tags.tag IN (";
// add with following comma
for ($i = 0; $i < count($tags)-1; $i++) {
$query .= "'".$tags[$i]."',";
}
// add last without a comma
$query .= "'".$tags[count($tags)-1]."'";
$query .= ") HAVING COUNT(DISTINCT nv_tags.tag) = ".count($tags);
echo $query;
$entries = execSelect($query);
echo "<pre>";
print_r($entries);
echo "</pre>";