2011-07-14 4 views
0
with one as 
    (Select sno = ROW_NUMBER()OVER (order by complaint_id), Complaint_Id, Complaint.ComplaintType_id, Complaint.complaintProfileId, Complaint.Description, 
           Complaint.Email, Complaint.PriorityLevel_id, Complaint.Date_Complained, Complaint.Status, Complaint.AdminComments, Complaint.Phone, Complaint.Evidence 
        from Complaints Complaint) 

Le résultat de cette requête est (pas tout le résultat)jointure interne sur deux tables, avec clause

sno complaintProfileId 
1    14 
2    15 
3    15 
4    14 
5    14 
6    13 

Le deuxième sous-requête:

two as 
        (SELECT Complaint.complaintProfileId, 
      CASE 
       WHEN MMB_Name IS NOT NULL THEN MMB_Name 
       WHEN UPPMembership.profile_id IS NOT NULL THEN 'UPP' 
       ELSE 'Not found' 
      END as Name 
     FROM Complaints Complaint 
     LEFT JOIN MMBMembership 
     ON MMBMembership.profile_id = Complaint.complaintProfileId 
     left JOIN MMB_BusinessProfiles mmbProfiles 
     ON mmbProfiles.MMB_id = MMBMembership.MMB_id 
     LEFT JOIN UPPMembership 
     ON UPPMembership.profile_id = Complaint.complaintProfileId) 


complaintProfileId Name 
14     UPP 
15    Marlon 
15    Marlon 
14     UPP 
14     UPP 
13     Rodolfo 

c'est donc là où je suis avoir des problèmes avec

select one.*, two.Name 
from one join two 
on one.complaintProfileId = two.complaintProfileId 

This query returns 36 records. id 14 est retourné 9times et 15-6times et ainsi de suite ..

Je suis en train de faire une jointure interne, mais toujours pas sûr

Merci Sun

Répondre

1

Vous devez joindre à une clé unique. Chaque '14' sur le côté gauche est joint à chacun des trois '14 sur le côté droit. (3x3 = 9)

+0

Ok merci, j'ai utilisé le SNo pour rejoindre – Sun

+0

Vous pourriez * probablement * vous être débarrassé de la jointure à Complaint dans 'two'. –

Questions connexes