多搜索sql查询

时间:2014-07-23 15:08:24

标签: sql hsqldb

这是一个概念性问题。我正在使用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 = *我收到错误消息。什么是最适合性别和城市的?

感谢您的回答!

1 个答案:

答案 0 :(得分:0)

你准备好的sql语句应该包含这样的语言:

...where person like ':person' and city like ':city' and gender like ':gender';

如果您希望按姓名指定某个人,请传递您要查找的名称,并为城市和性别传递“%”。无论您想忽略哪个字段,只需使用'%'作为字符串参数。