2
votes

SQL - Sélectionnez des enregistrements sans doublon sur un seul champ dans SQL?

Tableau 1


.
.
| C1          |  T1          |  P5
| C1          |  T1          |  P5
.
.

Tableau 2

------------------------------------------
| Customer_ID | Template_ID  | Product_ID  
------------------------------------------
| C1          |  T1          |  P1
| C1          |  T1          |  P5

| C1          |  T2          |  P10
| C1          |  T2          |  P45

.
.

Résultat attendu de la requête de jointure:

---------------------
| Template_ID | Product_ID  
---------------------
| T1   |  P1   |    
| T1   |  P5   |    
| T1   |  P5   |    

| T2    |  P10   |    
| T2    |  P45   |    

Pour un modèle, je souhaite obtenir uniquement le Product_ID unique comme ci-dessus. Actuellement, ma requête renvoie P5 deux fois comme,

| Customer_ID | Template_ID  
---------------------
| C1   |  T1   |    
| C1   |  T2   |    

---------------------

Comment puis-je gérer cela au niveau de la requête?


1 commentaires

Quelle est la clé primaire de votre Table2 ?


4 Réponses :


1
votes

utilisez un

  select distinct t1.*,t2.productid
  from table1 t1 join table2 t2 on t1.Template_ID  =t2.Template_ID  

distinct


1 commentaires

@SyAu créer un violon sans texte dbfiddle.uk/…



0
votes

Utilisez DISTINCT pour éliminer les doublons. Il ne s'applique pas uniquement à la première colonne, mais à la ligne entière.

Par exemple:

select distinct t1.customer_id, t1.template_id, t2.product_id
from t1
join t2 on t2.template_id = t1.template_id


0 commentaires

0
votes

Il vous suffit de GROUP BY le champ que vous voulez être unique, donc Product_ID:

SELECT Customer_ID,  Template_ID, Product_ID
FROM table1
JOIN table2 using ( Template_ID )
GROUP BY Product_ID;


0 commentaires

0
votes

Veuillez essayer ceci.

SELECT 
    DISTINCT A.Customer_ID ,A.Template_ID  ,B.Product_ID   
FROM 
    table1 AS A
INNER JOIN table2 AS B
ON A.Template_ID   = B.Template_ID  


0 commentaires