我有一个返回与匹配特定类别的项目结果的查询......MySQL查询 - 加入造成混乱,我在此查询
有3个MySQL表导致此,items
,categories
和item_categories
。
这些我假设是不言自明的,但后者是一个链接表,它使用id的匹配将任何特定项目链接到任何特定类别。
的项目表中包含一个行,具有1
的id
值类别表被填充有15行,具有1-15 id
值。
的item_categories表包含行,则item_id
值是1,并且category_id
值为5
这是MySQL查询在其PHP的形式:
$catResultQuery = "
SELECT i.id, name, price
FROM items i
INNER JOIN item_categories
ON i.id = item_id
INNER JOIN categories c
ON category_id = c.id
WHERE MATCH (c.id)
AGAINST ('{$_SESSION['input']}' IN BOOLEAN MODE)
ORDER BY name
";
会话变量具有值为5,但由于某种原因,此查询显示0结果集。
即使当我在php myadmin中运行查询,它返回0行。
而我很困惑,因为在我的脑海里,所有这些背后的逻辑看起来相当简单,但由于某种原因,我得到了0?有没有人有任何想法,我错了这个?
任何意见和输入将不胜感激,谢谢!
它看起来正确,直到WHERE子句。如果您只是运行该顶部部分,即没有WHERE子句,数据是否会返回? – TetonSig 2011-12-25 20:40:51
@TetonSig是的,它确实产生了数据,其余的被删除... – 2011-12-25 20:42:35
MATCH AGAINST语法似乎是用于模式匹配,这可能会巧妙地混淆事物并增加不必要的复杂性。你可以只使用WHERE c.id = {$ _SESSION ['input']}或者你想匹配多个值,这只是一个简单的例子,只有一个? – TetonSig 2011-12-25 20:48:09