2011-12-15 5 views
2
User_Master (ID is Primary Key identity) 

ID  Name Age  Gender 
1  James 25  Male 
2  John 30  Male 

User_Image (User_Id is foreign key from User_Master) 

ID  User_Id Thumbnail 
1   2  ABC.Jpeg 
2   2  AB.jpeg 

Je dois obtenir tous les champs de User_Master et un nom de miniature de l'utilisateur sélectionné dans User_Image tableauComment joindre deux tables dans la requête SQL sans répétition

Comme ceci:

User_Id Name   Age  Gender Thumbnail 
1   James  25  Male null 
2   John   30  Male ABC.Jpeg 

Répondre

3

One façon, en supposant que vous voulez l'image avec l'ID le plus bas car il y a évidemment plusieurs options;

select 
    id, name, age, gender, thumbnail 
from (
    select 
     rank() over (partition by m.id order by i.id asc) as rank, 
     m.id, 
     name, 
     age, 
     gender, 
     thumbnail 
    from 
     User_Master m left join User_Image i on (i.user_id = m.id) 
) t where rank = 1 
+1

Vous ne devriez pas utiliser 'RANK()' pour cela car il peut retourner plusieurs réponses avec la même valeur. Utilisez 'ROW_NUMBER()' à la place. – Johan

+0

Merci beaucoup frère .. Dieu vous bénisse :) Son fonctionnement maintenant avec ROW_NUMBER(). –