一张表存人员基本信息,一张关联表存人员类别(一个人可以有多个类别),现在需要把两张表关联起来进行查询,实现姓名、性别、类别进行检索,每个条件可以单独查询,如按性别查询;也可以组合查询,如按性别+类别查询,其中类别可以单选(如C),也可以多选(如D、C,既同时包括C、D类别的人员)。前端用JAVA,请教如何用一条SQL搞定这个查询,我用的mysql5.5 版本,测试数据如下:DROP TABLE IF EXISTS user_basic;
CREATE TABLE user_basic (
  id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  user_name VARCHAR(20) DEFAULT NULL,
  user_sex VARCHAR(2) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;INSERT INTO user_basic(user_name,user_sex)
SELECT '崔健','男' UNION ALL
SELECT '邓超','男' UNION ALL
SELECT '刘涛','女' UNION ALL
SELECT '崔永元','男';DROP TABLE IF EXISTS user_category;
CREATE TABLE user_category(  
  id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  fatid INT UNSIGNED NOT NULL,
  user_category VARCHAR(10),
  PRIMARY KEY (id),
  FOREIGN KEY (fatid) REFERENCES user_basic(id)
) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci;INSERT INTO user_category(fatid,user_category)
SELECT 1,'A' UNION ALL
SELECT 1,'C' UNION ALL
SELECT 1,'D' UNION ALL
SELECT 2,'B' UNION ALL
SELECT 2,'C' UNION ALL
SELECT 3,'C' UNION ALL
SELECT 3,'D' UNION ALL
SELECT 3,'E' UNION ALL
SELECT 4,'D';