首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL查询和复选框方法

MySQL查询和复选框方法
EN

Stack Overflow用户
提问于 2013-02-24 18:54:55
回答 3查看 74关注 0票数 0

My Table:

代码语言:javascript
复制
pno     name         lesson
-----------------------------
1       John         Math
1       John         Biology
2       Lisa         Biology
3       Emma         Math
3       Emma         Art
3       Emma         Pyhsic

您可以像“复选框”这样思考课程,当用户选中该课程时,它将过滤我的表。问题是,我只想过滤数学和生物!

当用户只检查数学时;

我的过滤表:

代码语言:javascript
复制
pno     name         lesson
-----------------------------
1       John         Math
3       Emma         Math

当用户同时检查数学和生物学时;

我的过滤表:

代码语言:javascript
复制
pno     name         lesson
-----------------------------
1       John         Math
1       John         Biology

我的HTML是http://jsbin.com/adarih/2/

当用户同时检查数学和生物学时,我标记了石灰颜色。所以丽莎有生物学,但没有数学。我不带丽莎去。艾玛学数学,但不学生物学。我不带艾玛去。

其实这看起来很容易。但这对我来说是至关重要的sql查询..。

EN

回答 3

Stack Overflow用户

发布于 2013-02-24 19:03:01

我不能百分之百地确定您想返回的结果,但是您可以通过如下查询获得每个具有数学和生物学特性的pno和名称:

代码语言:javascript
复制
SELECT DISTINCT Table1.pno, Table1.name
FROM SomeTable Table1
  INNER JOIN SomeTable Table2 ON Table2.pno = Table1.pno AND Table2.lesson = 'Biology'
WHERE Table1.lesson = 'Math'
ORDER BY Table1.pno

为了使用更灵活的查询来支持任意数量的匹配,假设您只拥有每一种课程类型中的一种(您可能希望在pno上执行一个唯一的键,并执行一个惟一的键来保证这一点),您可以这样做:

代码语言:javascript
复制
SELECT pno, name
FROM SomeTable
WHERE lesson IN ({Match List})
GROUP BY pno, name
HAVING COUNT(1) = {Total Number of options}
ORDER BY pno

其中{Match List}是您的列表(如原始问题中的“数学”、“生物学”),其中{选项总数}等于所有必须匹配的唯一值的数量(本例中为2)。再一次,让我强调,这只有在每堂课都是独一无二的情况下才能奏效.一旦不是,你就会得到假阳性。

票数 1
EN

Stack Overflow用户

发布于 2013-02-24 19:05:30

你可以找这个

代码语言:javascript
复制
$sql="select * from your_table 
where lesson =  '$biology'";
                      ^^-------this is the variable of which they select from check box

当他们选择另一个复选框时

你可以加上这个

代码语言:javascript
复制
$sql .= "OR lesson= '$math' " ;
票数 0
EN

Stack Overflow用户

发布于 2013-02-24 19:25:21

如果你想要同时学习数学和生物的人的名单,这应该是可行的:

代码语言:javascript
复制
SELECT t1.pno, t1.name
FROM myTable t1
WHERE EXISTS
(
SELECT 1
FROM myTable t2
WHERE t1.pno = t2.pno
AND t2.lesson = 'Math'
)
AND EXISTS
(
SELECT 1
FROM myTable t3
WHERE t1.pno = t3.pno
AND t3.lesson = 'Biology'
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15055336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档