2012-05-14 62 views
0

我有2个表(客户端和client_forms)。客户端总是一个实例(因为它涉及到一个人,但他们每年填写一个表单(1 - 0.n)。我需要一个MySQL语句为每个客户端选择所有表单,但我不确定如何做到这一点。它会使用某种嵌套查询的?从一个表中选择1条记录,从另一个表中选择0.n

回答

2

我建议你读入JOIN syntax。从本质上讲,你得写

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

我不知道,如果你需要这成为LEFT OUTER JOIN(总是每个客户端至少返回一条记录)或INNER JOIN(每个客户端和表单返回一条记录)

+0

哪种类型的加盟使得1-0.n加入? –

+0

LEFT OUTER JOIN,正如Lukas在他的询问中提出的那样。 –

+0

您可能想要使用'LEFT OUTER JOIN',因为您可能总是希望每个客户端至少有一个结果记录。您可以在手册中找到更多信息 –

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 
相关问题