【发布时间】:2017-03-23 19:06:13
【问题描述】:
当我开始并以前做过这件事时似乎很简单,现在我把自己弄糊涂了,遇到了障碍。
有两个表:News_Table 和 People_Table。在 News_Table 下有一个字段:News_People_Contributed,它具有数组格式 (1,4,7,10) 的 People_Table 的 ID,因此有四个人贡献了。我正在创建一个查找 News_Header AND News_People_Contributed 的搜索参数,但不知道如何创建搜索列。
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_Table.News_People_Contributed) 是一个字符串,而 ID 不是。另外我可能没有人贡献等等。为了使问题更加复杂,我在 MS Access 而不是 MySql 中执行此操作,因此必须将其编码为“老派” sql 以解决问题。
【问题讨论】:
-
News_People_Contributed 将 ID 作为字符串,而不是多值字段?如果该字段是一个字符串,以前看不到您是如何完成此查询的。存储为字符串是非常糟糕的设计。
-
它是一个多选菜单,使其变得简单。否则,我必须创建第三个表来链接其他两个表 - 在两个表之前完成。我喜欢使用数组,因为它更干净,更容易在其他项目上执行循环。也可以随时拆分字符串以调用数组。
-
这是糟糕的表结构。您应该有第三张桌子加入两者。然后在三个表上创建一个查询并进行搜索。你提到mysql,这跟什么有什么关系?
-
嗯,还有第三个表具有多值字段 - 你只是看不到它或直接使用它,因为它是一个隐藏的系统表。评论support.office.com/en-us/article/…
-
我提到 MySql 是因为 Access 不支持 MySql 支持的某些 SQL 语言,而使用 Access,您编写的查询略有不同。这个论坛上的大多数人都用应用于 MySql 数据库的真正 Sql 来回应。如果您知道较旧的访问权限,您就会知道它们非常相似,但绝对不一样。我知道第三张表是要走的路,但这也意味着我必须运行多次插入,因为数组更容易。感谢 cmets。