gpt4 book ai didi

MySQL 查询和复选框方法

转载 作者:行者123 更新时间:2023-11-29 14:01:03 24 4
gpt4 key购买 nike

我的 table :

pno     name         lesson
-----------------------------
1 John Math
1 John Biology
2 Lisa Biology
3 Emma Math
3 Emma Art
3 Emma Pyhsic

您可以将类(class)视为“复选框”,当用户选中该类(class)时,它会过滤我的表格。问题就在这里,我想过滤只选数学和生物!

<小时/>

当用户仅检查数学时;

我的过滤表:

pno     name         lesson
-----------------------------
1 John Math
3 Emma Math
<小时/>

当用户选择数学和生物时;

我的过滤表:

pno     name         lesson
-----------------------------
1 John Math
1 John Biology

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

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

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

最佳答案

我不能 100% 确定您想要返回什么结果,但您可以通过以下查询获取同时包含数学和生物的每个结果的不同 pno 和名称:

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

要获得更灵活的查询来支持任意数量的匹配,假设您只有每种类(class)类型中的一种(您可能需要在 pno 和类(class)上使用唯一的键来保证这一点),您可以执行以下操作:

SELECT pno, name
FROM SomeTable
WHERE lesson IN ({Match List})
GROUP BY pno, name
HAVING COUNT(1) = {Total Number of options}
ORDER BY pno

其中,{匹配列表} 是您的列表(例如原始问题中的“数学”、“生物”),而{选项总数} 等于所有必须匹配的唯一值的数量(在本例中为 2)。再次强调,这只有在每个 PNO 的每节课都是唯一的情况下才有效……如果不是,您就会得到误报。

关于MySQL 查询和复选框方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15055336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com