1

我不知道我该怎么做......

表“孩子”:

idchild | name | idability
--------------------------
   1    | Joe  |    1
   1    | Joe  |    2
   2    | Peter|    1
   2    | Peter|    3
   3    | Kate |    4

表“能力”:

idability | ability
-------------------
     1    |   run
     2    |   read
     3    |   write
     4    |   swim

例如,Joe 可以“跑步”和“阅读”,但不能“写作”或“游泳”。我需要这样一份关于乔能力的清单:

ability |  
-----------------
  run   |   +
  read  |   +
  write |   - 
  swim  |   -

我以不同的方式尝试了几个 SQL 查询(使用“不存在”),但从未得到正确的结果。我希望有人能告诉我应该怎么做。

先感谢您!

4

2 回答 2

3

这应该没问题:

select ability.ability, if(child.idability,'+','-') from ability left join child on ability.idability =child.idability and child.name="joe";
于 2012-12-30T19:47:06.633 回答
0

试试这个:

select `child`.`idChild`,`child`.`name`, `child`.`idability`, `ability`.`idAbility`,`ability`.`ability` from `child` inner join `ability` on `child`.`idAbility` = `ability`.`idability` order by `child`.`name`, `ability`.`ability`

您可以删除不需要的列。

于 2012-12-30T19:21:54.160 回答