Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL在这个语句中放在哪里?_Php_Mysql_Sql_Join - Fatal编程技术网

Php MySQL在这个语句中放在哪里?

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

这有点超出了我的能力,所以我得到了很多好的人的帮助。我现在需要的是放一根火柴()。。。反对()但我不知道在哪里插入它

我的问题是(这是简短的版本):

如您所见,有一个名为attributestrings的表,它有3列:ItemID、*Key*和Value。我需要在列值中搜索反对()的单词,只显示与此和其他标准(如上面的日期和签出)匹配的结果

我尝试在
之后添加语句,并且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)