Php MySQL在这个语句中放在哪里?
这有点超出了我的能力,所以我得到了很多好的人的帮助。我现在需要的是放一根火柴()。。。反对()但我不知道在哪里插入它 我的问题是(这是简短的版本): 如您所见,有一个名为attributestrings的表,它有3列:ItemID、*Key*和Value。我需要在列值中搜索反对()的单词,只显示与此和其他标准(如上面的日期和签出)匹配的结果 我尝试在Php MySQL在这个语句中放在哪里?,php,mysql,sql,join,Php,Mysql,Sql,Join,这有点超出了我的能力,所以我得到了很多好的人的帮助。我现在需要的是放一根火柴()。。。反对()但我不知道在哪里插入它 我的问题是(这是简短的版本): 如您所见,有一个名为attributestrings的表,它有3列:ItemID、*Key*和Value。我需要在列值中搜索反对()的单词,只显示与此和其他标准(如上面的日期和签出)匹配的结果 我尝试在之后添加语句,并且Checkout为NULL,如下所示: AND Checkout IS NULL AND MATCH(Attributes.Val
之后添加语句,并且Checkout为NULL,如下所示:
AND Checkout IS NULL
AND MATCH(Attributes.Value) AGAINST("Nokia" IN BOOLEAN MODE)
我不得不使用Attributes.Value而不是attributestrings,因为它没有找到表。这只会导致连接的列属性仅包含值“Nokia”,即使还有更多要连接的地方
我希望有人愿意接受这个挑战
//给你加油
[编辑]
正如蒂姆·富尔茨所建议的那样,我试着在小组之前输入WHERE,但我得到了错误
Where子句中的未知列“attributestrings.Value”
LEFT JOIN attributeintegers atci ON atci.itemid = i.idItems AND atci.key = 'Color' LEFT JOIN Strings tc ON tc.StringID = atci.value
WHERE MATCH(attributestrings.Value) AGAINST("Nokia Sony" IN BOOLEAN MODE)
GROUP BY Attributes.ItemID
这通常放在Where子句中:
WHERE MATCH(attributestrings.Value) AGAINST("Nokia" IN BOOLEAN MODE)
我想我想出了一个解决办法
我又加了一句:
LEFT JOIN attributestrings fts ON fts.itemid = i.idItems AND MATCH(fts.Value) AGAINST("Nokia Sony" IN BOOLEAN MODE)
就在groupby…
之前,然后在主select语句中包含fts.Value ftsv
。现在我可以在分组依据..
之间插入一个,使ftsv不为空。和订购人…
这给了我想要的结果,但查询现在开始变得有点慢…当您使用as use分配表名时,查询中的每个位置都有一个问题。正如您所给出的属性字符串一样,ats现在在所有地方都使用ats,这将起作用。正如您所看到的,没有WHERE子句,问题仍然存在,应该在哪里插入?where子句将位于JOIN语句之后和GROUP BY之前。它抱怨:“where子句”@Max Kielland中的未知列“attributestrings.Value”,这是因为您将对attributestrings
表的引用别名为atts
和attes
。无论您希望筛选哪一个,都需要使用别名,即,WHERE MATCH(atts.Value)与…
Hmm,okay将在某个时候尝试并返回。。。我现在已经可以使用它了,但是最好不要使用
,因为它是特定于MySQL的。
WHERE MATCH(attributestrings.Value) AGAINST("Nokia" IN BOOLEAN MODE)
LEFT JOIN attributestrings fts ON fts.itemid = i.idItems AND MATCH(fts.Value) AGAINST("Nokia Sony" IN BOOLEAN MODE)