我有一个表(名为Assignments),如下所示:
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语法是什么样的?我想在某个地方必须有一个通配符,如:
SHOW 'Username' WHERE * = 1
或其他什么。
我知道我的数据库设计可能不好,但它现在是什么,现在无法解决,但我愿意接受建议。在此表中基本上有5000个用户。
编辑:
我需要能够输入" bugs bunny"进入我的搜索栏...然后它搜索这个表,并将列出我已分配的所有网站(任何带有" 1")...我希望这有帮助...再次感谢。
答案 0 :(得分: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
最后:
<强> UserAssignments 强>
User_id Assignment_id
------------------------------
0 1
0 2
使用此设置,您可以根据需要添加任意数量的Users
和Assignments
,并且可以通过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'
答案 1 :(得分:0)
以下是查询:
SELECT 'RandomWebsite1'
FROM Assignments
WHERE Username = 'bugs bunny' AND RandomWebsite1
UNION
SELECT 'RandomWebsite2'
FROM Assignments
WHERE Username = 'bugs bunny' AND RandomWebsite2
UNION
SELECT 'RandomWebsite3'
FROM Assignments
WHERE Username = 'bugs bunny' AND RandomWebsite3
每次修改&#34;网站&#34;列,也更新查询。