2013-04-30 3 views
1

У меня есть четыре таблицы и вы хотите создать новую таблицу с одной строкой на одного клиента.SQL-запрос для соединения таблиц

КЛИЕНТ

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 

ОТДЕЛЕНИЕ

id | name 

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

КОМПАНИЯ

id | name 

1 | compA 
2 | compB 

DESIRED ТАБЛИЦА РЕЗУЛЬТАТ, когда запрос для подразделений = недвижимости

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

+0

Если клиент принадлежит к нескольким разделам, мне требуется, чтобы запись клиента отображалась только один раз. – user1367386

+0

Чтобы отобразить только уникальные записи, вам нужно добавить DISTINCT после SELECT. –

Смежные вопросы