从一个表中选择1个记录,从另一个表中选择0.n

时间:2012-05-14 13:50:44

标签: mysql sql database database-design

我有2个表(clients和client_forms)。客户端总是单个实例(因为它与单个人有关,但他们每年填写一个表单(1 - 0.n)。我需要一个MySQL语句,为每个客户选择所有表单,但我不确定怎么做呢。它会使用某种嵌套查询吗?

2 个答案:

答案 0 :(得分:2)

我建议您阅读JOIN syntax。基本上你必须写

SELECT *
FROM clients
[LEFT OUTER] JOIN client_forms ON [put the join condition here]

我不确定你是否需要这个LEFT OUTER JOIN(每个客户端总是至少返回一条记录),或INNER JOIN(每个客户端和表单返回一条记录)

答案 1 :(得分:0)

select
  *
from
  clients
  join clent_forms on client_forms.client_id=clients.client_id

将返回所有表单的所有客户端 - 假设两个表中都有client_id列标识客户端。它不会返回没有表单的客户。

如果您还想要没有表单的客户,则需要outer加入:

select
  *
from
  clients
  left outer join clent_forms on client_forms.client_id=clients.client_id