这是一个概念性问题。我正在使用hsqldb
我想创建一个具有多个不同下拉菜单的多元素。我的想法是选择所有并过滤我查询所需的属性。但是,这并不像我想要的那样有效:
例如。:
Select distinct person, city, gender from test where person = 'John' and gender = * and city = *;
例如:
我的表test
中有3列:Person, City, Gender
+--------+--------+--------+
| Person | City | Gender |
+--------+--------+--------+
| John | Berlin | male |
| John | London | male |
| Fred | Berlin | male |
| Sarah | Vienna | fem |
| John | London | male |
| Fred | Vienna | fem |
+--------+--------+--------+
现在如果我在Person John中选择我有:
+--------+--------+--------+
| Person | City | Gender |
+--------+--------+--------+
| John | Berlin | male |
| | | |
| | | |
+--------+--------+--------+
另一个例子,如果我在下拉列表中选择维也纳,我会得到:
+-------------------------+
| Person City Gender |
+-------------------------+
| Sarah Vienna fem |
| Fred |
+-------------------------+
我真的想将它实现为一个sql查询,因为我认为这将是最优雅的解决方案。有什么建议怎么做?这样的查询怎么样?
感谢您的回答!
更新
好的有了主意。
我想像那样实现它:
所以,当我选择约翰时,我会回来:
+--------+--------+--------+
| Person | City | Gender |
+--------+--------+--------+
| John | Berlin | male |
| John | London | male |
| John | London | male |
+--------+--------+--------+
查询看起来像我猜:
SELECT person, city, gender FROM test where person = 'John' and city = * and gender = *
在gender = *
我收到错误消息。什么是最适合性别和城市的?
感谢您的回答!
答案 0 :(得分:0)
你准备好的sql语句应该包含这样的语言:
...where person like ':person' and city like ':city' and gender like ':gender';
如果您希望按姓名指定某个人,请传递您要查找的名称,并为城市和性别传递“%”。无论您想忽略哪个字段,只需使用'%'作为字符串参数。