Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
Mysql SQL是外部或内部连接,以及如何在数组上连接_Mysql_Ms Access_Jointable - Fatal编程技术网

Mysql SQL是外部或内部连接,以及如何在数组上连接

Mysql SQL是外部或内部连接,以及如何在数组上连接,mysql,ms-access,jointable,Mysql,Ms Access,Jointable,当我开始做这件事的时候看起来很简单,以前也做过,现在我把自己弄糊涂了 有两张桌子:新闻桌子和人物桌子。在News_表下有一个字段:News_People_Contributed,它的ID是People_表的数组格式(1,4,7,10),因此有四个人参与。我正在创建一个搜索参数,用于查找新闻标题和新闻人物,但不知道如何创建搜索列 News_Table News_ID News_Header News_People_Contributed People_Table People_ID People

当我开始做这件事的时候看起来很简单,以前也做过,现在我把自己弄糊涂了

有两张桌子:新闻桌子和人物桌子。在News_表下有一个字段:News_People_Contributed,它的ID是People_表的数组格式(1,4,7,10),因此有四个人参与。我正在创建一个搜索参数,用于查找新闻标题和新闻人物,但不知道如何创建搜索列

News_Table
News_ID
News_Header
News_People_Contributed

People_Table
People_ID
People_First_Name...
是不是有点像

Select*
From News_Table
Left Join News_Table
On People_Table.People_ID IN (News_Table.News_People_Contributed)
Where Search_Param Like '%News_Header%' OR Search_Param Like '%People_First_Name%'

问题是(News\u Table.News\u People\u Contributed)是一个字符串,而ID不是。另外,我可能没有人参与,等等。为了使问题更加复杂,我在MS Access中而不是在MySql中进行此操作,因此必须将其编码为“老式”sql以解决问题。

执行交叉连接并筛选字符串列表中的匹配项。它没有提到效率或形式(正如已经评论过的),但它是有效的

SELECT *
FROM News_Table, People_Table
WHERE InStr([News_People_Contributed],CStr([People_ID])) > 0;

这只回答了问题的一部分:加入——在最初的评论中每个人似乎都关心的问题。关于Search_参数的详细信息不足,无法提供这方面的帮助。如果您需要更多帮助,请提供更多详细信息。

News\u People\u是否将ID作为字符串,而不是多值字段?如果字段是一个字符串,您以前不知道如何执行此查询。存储为字符串是非常糟糕的设计。它是一个多选菜单,使之容易。否则,我必须创建第三个表来链接其他两个表-在两个表之前完成。我喜欢使用数组,因为它更干净,更容易在其他项目上进行循环。总是可以拆分字符串以调用数组。这是糟糕的表结构。你应该有第三张桌子来连接这两张桌子。然后在这三个表上创建一个查询并进行搜索。提到mysql,这和什么有什么关系呢?第三个表有多值字段——你看不到它,也不直接使用它,因为它是一个隐藏的系统表。回顾一下我提到的MySql,因为Access不支持MySql所使用的一些SQL语言,而使用Access编写的查询略有不同。这个论坛上的大多数人都会用真正的Sql作为MySql数据库的响应。如果你知道旧的访问,你知道他们非常相似,但肯定不一样。我知道第三个表是可行的,但这也意味着我必须运行多重插入,因为数组更容易。谢谢你的评论。