Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从一个表中选择1条记录,从另一个表中选择0.n_Mysql_Sql_Database_Database Design - Fatal编程技术网

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

Mysql 从一个表中选择1条记录,从另一个表中选择0.n,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,我有两张表(客户和客户表格)。客户端总是一个实例(因为它涉及一个人,但他们每年填写一个表单(1-0.n)。我需要一个MySQL语句,为每个客户端选择所有表单,但我不确定如何执行。它会使用某种嵌套查询吗?我建议您阅读。基本上,您必须编写 SELECT * FROM clients [LEFT OUTER] JOIN client_forms ON [put the join condition here] 我不确定您是否需要将其作为左外部联接(始终为每个客户端至少返回一条记录)或内部联接(为每个

我有两张表(客户和客户表格)。客户端总是一个实例(因为它涉及一个人,但他们每年填写一个表单(1-0.n)。我需要一个MySQL语句,为每个客户端选择所有表单,但我不确定如何执行。它会使用某种嵌套查询吗?

我建议您阅读。基本上,您必须编写

SELECT *
FROM clients
[LEFT OUTER] JOIN client_forms ON [put the join condition here]
我不确定您是否需要将其作为
左外部联接
(始终为每个客户端至少返回一条记录)或
内部联接
(为每个客户端和表单返回一条记录)

将返回所有客户端及其所有表单-假设两个表中都有一个标识客户端的
client\u id
列。它不会返回没有表单的客户端

如果您还想要没有表单的客户端,则需要一个
outer
join:

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

哪种类型的联接使1-0.n联接?正如Lukas在他的查询中所说的,左外部联接。您可能希望使用
左外部联接
,因为您可能总是希望每个客户端至少有一个结果记录。您可以在手册中找到更多信息
select
  *
from
  clients
  left outer join clent_forms on client_forms.client_id=clients.client_id