MySQL - 帮助编写搜索查询语法

时间:2014-03-21 19:28:50

标签: mysql sql

我有一个表(名为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

我需要的是三种不同的查询:(用英语做错,而不是我写错了语法"

  1. 如果我想搜索分配了RandomWebsite1的所有人(我的程序将1识别为分配的值),我需要将用户名添加到列表框中

  2. 我需要搜索" RandomWebsite1"任何拥有" 1"在该字段中需要添加到我的列表框中。 MySQL语法是什么样的?

  3. 我需要搜索表中的所有列,无论列的名称是什么,因为它可以随机生成,以及任何拥有" 1"在该字段中需要添加到我的列表框中。 MySQL语法是什么样的?我想在某个地方必须有一个通配符,如:

    SHOW 'Username' WHERE * = 1或其他什么。

  4. 我知道我的数据库设计可能不好,但它现在是什么,现在无法解决,但我愿意接受建议。在此表中基本上有5000个用户。

    编辑:

    我需要能够输入" bugs bunny"进入我的搜索栏...然后它搜索这个表,并将列出我已分配的所有网站(任何带有" 1")...我希望这有帮助...再次感谢。

2 个答案:

答案 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

使用此设置,您可以根据需要添加任意数量的UsersAssignments,并且可以通过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;列,也更新查询。