我有一个表(名为“作业”),如下所示:
Username RandomWebsite1 RandomWebsite2 RandomWebsite3
-----------------------------------------------------------------
bugs bunny 1 0 1
elmer fudd 0 1 1
popeye 1 1 0
elvis 1 1 1
bruce lee 0 1 0
我需要的是三个不同的查询,例如:(我会用英语来完成,而不是我在编写语法时的错误尝试”
如果我想搜索分配了 RandomWebsite1 的所有人员,我需要将用户名添加到列表框中(我的程序将 1 识别为分配的值)
我需要搜索“RandomWebsite1”,并且该字段中包含“1”的任何人都需要添加到我的列表框中。 MySQL 语法是什么样的?
我需要搜索表中的所有列,无论列的名称是什么,因为它可以随机生成,并且该字段中包含“1”的任何人都需要添加到我的列表框中。 MySQL 语法是什么样的?我想在类似的地方必须有一个通配符:
在 WHERE * = 1 处显示“用户名”
或其他内容。
我知道我的数据库设计可能很糟糕,但事实就是如此,现在无法修复它,但我愿意接受建议。该表中基本上有大约 5000 个用户。
编辑:
我需要能够在搜索字段中输入“bugs bunny”...然后它会搜索此表并列出所有已分配的网站(任何带有“1”的网站)...我希望这会有所帮助...再次感谢。
最佳答案
明确地说,您应该有三个表来完成此任务。 第一个表:
用户
User_id UserName
---------------------
0 bugsbunny
1 elmer fudd
2 popeye
第二个表:
作业
Assignment_id website_name
-------------------------------------
0 www.url1.com
1 www.url2.com
2 www.url3.com
最后:
用户分配
User_id Assignment_id
------------------------------
0 1
0 2
通过此设置,您可以根据需要添加任意数量的用户
和分配
,并且可以通过UserAssignment
表将它们链接在一起,无需动态生成随机列!
因此,要查看已分配给用户 bugsbunny
的所有网站,您可以执行以下操作:
SELECT a.website_name FROM Assignments a
JOIN UserAssignments ua ON ua.Assignment_id = a.Assignment_id
JOIN Users u ON u.User_id = ua.User_id
WHERE u.UserName = 'bugsbunny'
关于MySQL - 帮助编写搜索查询语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22567871/