2016-01-05 2 views
2

Cela peut sembler déroutant mais voici ce que j'essaie de réaliser ... J'ai deux tables avec des colonnes communes que je voudrais les regrouper en une vue ... (I dont ont quelle colonne unique)Grouper 2 tables sans se joindre à MySQL

Tableau 1:

PatientID Name  Grade x  Grade Y Grade Z  Grade V 
----------------------------------------------------------------- 
1   Mohamed  A   C   A   E 
2   John   W   S   A   A 
1   Mohamed  T   X   A   W 
3   TOM   A   X   Y   E 
3   TOM   R   R   T   W 

Tableau 3:

PatientID Name  Score 1  Score 2 Score 3  Score 4 
----------------------------------------------------------------- 
1   Mohamed  1   1   4   1 
3   TOM   2   2   4   8 
1   Mohamed  4   X   8   3 
3   TOM   2   X   6   4 
3   TOM   4   R   9   9 

sortie:

PatientID Name  Score 1  Score 2 Score 3  Score 4  Grade x  Grade Y Grade Z  Grade V 
------------------------------------------------------------------------------------------------------------- 
1   Mohamed  1   1   4   1   Null  Null  Null   Null 
3   TOM   2   2   4   8   Null  Null  Null   Null 
1   Mohamed  4   X   8   3   Null  Null  Null   Null 
3   TOM   2   X   6   4   Null  Null  Null   Null 
3   TOM   4   R   9   9   Null  Null  Null   Null 
1   Mohamed  Null  Null  Null   Null  A   C   A   E 
2   John   Null  Null  Null   Null  W   S   A   A 
1   Mohamed  Null  Null  Null   Null  T   X   A   W 
3   TOM   Null  Null  Null   Null  A   X   Y   E 
3   TOM   Null  Null  Null   Null  R   R   T   W 
+0

La réponse est la bonne réponse pour la sortie que vous avez demandé, mais je ne peux pas comprendre pourquoi diable vous voulez un tel résultat. – davejal

+0

Pourquoi ne pouvons-nous pas utiliser ** JOIN **. Imaginez une table avec 30 colonnes, elle ne sera pas belle avec ** NULL comme nom de colonne ** –

Répondre

4

Utilisez UNION/UNION ALL pour récupérer tous les enregistrements des deux tables.

Essayez ceci:

SELECT PatientID, Name, 
     NULL AS Score1, NULL AS Score2, NULL AS Score3, NULL AS Score4, 
     GradeX, GradeY, GradeZ, GradeV 
FROM table1 
UNION ALL 
SELECT PatientID, Name, 
     Score1, Score2, Score3, Score4, 
     NULL AS GradeX, NULL AS GradeY, NULL AS GradeZ, NULL AS GradeV 
FROM table3; 
1
select table1.*,table3.Score1, table3.Score2, table3.Score3, table3.Score4 from table1 left join table3 on table1.PatientID =table3.PatientID 
union 
select table1.*,table3.Score1, table3.Score2, table3.Score3, table3.Score4 from table3 left join table1 on table1.PatientID =table3.PatientID ;