2013-04-30 4 views
1

J'ai quatre tables et je veux créer une nouvelle table avec seulement une ligne par client.Requête SQL pour joindre des tables

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 

SOCIETE

id | name 

1 | compA 
2 | compB 

DÉSIRÉ TABLEAU RÉSULTAT lorsque la requête pour les divisions = immobilier

id | fname | lname | city | company_name 

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

Je voudrais être en mesure de créer une nouvelle table avec une ligne par client où sont passés les paramètres de division la requête. Les paramètres transmis proviendront des cases à cocher que l'utilisateur sélectionne avant de soumettre la requête. Comment créer une requête de jointure pour cela?

Répondre

0

J'espère que cette requête vous aidera:

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) 

Vous devez remplacer @division_id avec vous la valeur.

+0

Désolé. J'ai utilisé le script ci-dessus et exécuté les requêtes et il a retourné les mêmes clients même lorsque j'ai changé le @division_id. – user1367386

+0

Si le client appartient à plusieurs divisions, l'enregistrement du client ne doit apparaître qu'une seule fois. – user1367386

+0

Pour afficher uniquement les enregistrements uniques, vous devez ajouter DISTINCT après SELECT. –