2013-04-30 86 views
1

我有四个表,并且希望创建一个每个客户端只有一行的新表。用于连接表的SQL查询

CLIENT

id | fname | lname | city | company_id 

1 | kim | smith | jhb | 1 
2 | tom | jones | ct | 1 
3 | john | short | pe | 2 

CLIENT_DIVISION

id | client_id | division_id 

1 | 1   | 1 
2 | 1   | 2 
3 | 2   | 1 
4 | 2   | 3 
5 | 2   | 4 
6 | 3   | 4 
7 | 3   | 2 

DIVISION

id | name 

1 | estate 
2 | property 
3 | litigation 
4 | commercial 

公司

id | name 

1 | compA 
2 | compB 

所需的表结果当查询师=房地产

id | fname | lname | city | company_name 

1 | kim | smith | jhb | compA 
2 | tom | jones | ct | compA 

我希望能够创建一个新的表,每个客户一行了分割参数传递给查询。传递的参数将来自用户在提交查询之前选择的复选框。我如何创建一个连接查询?

回答

0

我希望这个查询将帮助您:

SELECT DISTINCT  CLIENT.id, CLIENT.fname, CLIENT.lname, CLIENT.city, COMPANY.name 
FROM   CLIENT INNER JOIN 
        CLIENT_DIVISION ON CLIENT.id = CLIENT_DIVISION.client_id INNER JOIN 
        COMPANY ON CLIENT.company_id = COMPANY.id INNER JOIN 
        DIVISION ON CLIENT_DIVISION.division_id = DIVISION.id 
WHERE  (DIVISION.id = @division_id) 

您需要使用您的值替换@division_id。

+0

对不起。我使用上述脚本并运行查询,即使在更改@division_id时,它也会返回相同的客户端。 – user1367386 2013-05-01 18:42:34

+0

如果客户属于多个部门,我要求客户记录只出现一次。 – user1367386 2013-05-01 18:55:06

+0

要仅显示唯一记录,您需要在SELECT之后添加DISTINCT。 – 2013-05-02 04:23:40