我有三个表 group_sentences , group_sentences_attributes 和 group_senteces_categories 。
我有一个属性数组,我在IN
的查询中使用(在内爆之后)。
然后我有一个类别ID,因为它们是递归存储的,因此不需要数组。
我需要选择一个组号,其中$ attributesArray和类别的最大匹配。
这是表group_sentences_attributes
+-----+-------+-----------+
| id | group | attribute |
+-----+-------+-----------+
| 1 | 1 | 3564 |
| 2 | 1 | 3687 |
| 3 | 1 | 3689 |
| 4 | 2 | 3687 |
| 5 | 2 | 3564 |
+-----+-------+-----------+
这是group_sentences_category
+-----+-------+----------+
| id | group | category |
+-----+-------+----------+
| 1 | 1 | 1564 |
| 2 | 1 | 1221 |
| 3 | 1 | 1756 |
| 4 | 2 | 1358 |
| 5 | 2 | 1125 |
+-----+-------+----------+
这是我的疑问,但我担心它不会完成工作。
SELECT group_categories.group
FROM group_categories, group_attributes
WHERE group_categories.category = '$category'
AND group_attributes.attribute IN ($attributesArray)
GROUP BY group_categories.group
ORDER BY count(group_attributes.attribute)
任何帮助都将不胜感激,谢谢。
答案 0 :(得分:1)
首先,查询中的表与问题中的表不匹配。我猜他们只是错过了"句子"。然后,您没有join
子句。简单规则:切勿在{{1}}子句中使用逗号。
from
是列的糟糕名称,因为它是SQL中的关键字。您可能正在寻找以下内容:
group
如果您只想要一行,请将SELECT gc.groupid
FROM group_sentences_attributes sa JOIN
group_sentences_category sc
ON sa.groupid = sc.groupid
WHERE sc.category = '$category' AND
sa.attribute IN ($attributesArray)
GROUP BY sa.groupid
ORDER BY count(sa.attribute);
添加到最后。