Php mysql查询失败原因不明(对我来说)
错误只显示了查询的一部分,有人能看到我犯的错误吗 我想得到的是基于标签的条目,有3个表,nv_条目,nv_标签和nv_图像。如果标签位于nv_标签表中,则应使用该表中的entrie_id从nv_条目和nv_图像中获取内容 这些表如下所示:Php mysql查询失败原因不明(对我来说),php,mysql,Php,Mysql,错误只显示了查询的一部分,有人能看到我犯的错误吗 我想得到的是基于标签的条目,有3个表,nv_条目,nv_标签和nv_图像。如果标签位于nv_标签表中,则应使用该表中的entrie_id从nv_条目和nv_图像中获取内容 这些表如下所示: nv_entries: id - title - year - etc.. nv_tags: id - entrieid - tag nv_images: id - entrieid - source 查询失败:您的SQL语法有错误;检查与您的MySQL
nv_entries:
id - title - year - etc..
nv_tags:
id - entrieid - tag
nv_images:
id - entrieid - source
查询失败:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第1行使用near“GROUP BY nv_entries ON nv_entries.id=nv_tags.entrie_id和nv_tags.tag IN”的正确语法
在下面的脚本中生成的查询如下所示:
nv_entries:
id - title - year - etc..
nv_tags:
id - entrieid - tag
nv_images:
id - entrieid - source
按nv_条目分组在nv_条目上加入。id=nv_tags.entrie_id和nv_tags.tag IN('tree','green')具有计数(不同的nv_tags.tag)=2
这是脚本(部分):
for($i=0;$i
您的查询格式不正确
冷风应符合以下要求:
$sql ="
select e.*, i.*, group_concat( t.tag separator ',') as tag_list
from nv_entries e
JOIN nv_tags t on t.entrie_id = e.id
LEFT JOIN nv_images i on i.entrie_id = e.id
where t.tag in ( $tag_list )
group by e.id
having count(t.id) = $num_tags ";
添加与图像的连接
此查询将使用LEFT每个图像返回一行,如果缺少图像,请避免缺少行
查询的第一部分在哪里(例如,
从中选择此…
)?是的,当组合SQL子句的随机块时,通常不会获得有效的SQL。什么不清楚?GROUP BY
和JOIN
的顺序不正确,而且JOIN
和上的之间缺少一些内容。我对这一点很陌生。如果我在开头加上这个,可以吗SELECT*FROM nv_entries
(我可以在30分钟内检查,但不是现在,但我真的必须尽快完成,因为有人在依赖我)谢谢,也许是时候买一本关于mysql的好书了,看起来不难,但从它开始也不容易。谢谢你的草稿很值钱,看起来很有用。图像的连接应位于哪一行?(如果没有图像,这必须是左连接吗?)。最后,我还将选择属于entrie的所有标记。查询失败:“字段列表”中的未知列“e.tag”
我将第一行更改为这一行,希望能够修复它:选择e.*,i.*,t.*,group_concat(t.tag separator',')作为标记列表。
没有错误,但当我回显时,我看到了[tag=>树[tag list]=>树
其中仅显示已使用的标记,而entrie有更多标记。它显示为double很好,但是其中任何一个都应该包含所有标记。谢谢你帮了这么多忙,是我的错。“e”是nv_条目的别名,“t”表示nv_标记,“i”表示nv_图像,因此列必须与表一致:)它如何从entrie返回所有标记?问题是我必须在页面结果上显示所有标记,并突出显示在哪里键入的标记以查找匹配项。
$sql ="
select e.*, i.*, group_concat( t.tag separator ',') as tag_list
from nv_entries e
JOIN nv_tags t on t.entrie_id = e.id
LEFT JOIN nv_images i on i.entrie_id = e.id
where t.tag in ( $tag_list )
group by e.id
having count(t.id) = $num_tags ";