我想仅在$arr_tags
匹配所有array_elements with tags_is_tags
时才选择帖子。例如,在这种情况下将输出0个帖子,因为一个数组元素与tags_id_tags
我该怎么办?
$arr_tags = array("16", "17", "36", "543"); // the dimension is not always the same
post_id_post tags_id_tags
282 16
282 17
282 36
282 546
我有这段代码,但查询没有完成。
$sql = $db -> prepare("
SELECT post_id_post
FROM posts
// ...
");
$sql -> bind_param('s', $val);
$sql -> execute();
$sql -> bind_result($d_post);
感谢您的时间
答案 0 :(得分:4)
SELECT post_id_post
FROM posts
WHERE tags_id_tags IN ("16", "17", "36", "543")
GROUP BY post_id_post
HAVING COUNT(*) = 4
您将所有必需标记的ID放在IN
子句中,并将COUNT(*) = 4
表达式中的数字更改为传递的标记数
答案 1 :(得分:0)
在我看来,你想知道如何提出正确的问题。这里的魔术词是“关系分裂”。
它是Codd的relational algebra中的运算符之一,自此以后提出了一些变体。最近,Chris Date建议用image relations替换整个概念。
SQL没有明确的除法运算符。有许多使用其他运算符的变通方法,最合适的将取决于您的要求,包括对余数的精确除法或除法以及如何处理空除数。然后有通常的考虑因素:SQL产品和版本,性能,个人风格和品味等。
以下是一些可以帮助您做出这些选择的文章: