Salut,

Un petit problème mathématique :
J'ai 4 tables
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
T1(doc_id#, rank#, value)
T2(doc_id#, rank#, value)
T3(doc_id#, rank#, value)
T4(doc_id#, rank#, value)
Remplies de la sorte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
T1 
1      1      3
1      2      6
 
T2
1      1      6
1      2      7
1      3      9
 
T3
1      1      10
1      2      12
 
T4
1      1      13
1      2      14
1      3      15
1      4      16
Je souhaiterais obtenir le résultat suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
T5
Doc_id      value1        value2          value3      value4
1              3            6               10            13
1              6            7               12            14
1                           9                             15
1                                                         16
Tout ça sous MySQL

A priori les FULL OUTER JOIN pourraient être utiles ici, malheureusement ils ne sont pas implémentés sous MySQL

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
SELECT
  T1.VALUE 
  T2.VALUE 
  T3.value
  T4.value
  FROM q1
  FULL JOIN q2 ON (q1.rank = q2.rank AND q1.doc_id=q2.doc_id)
  FULL JOIN q3 ON (q1.rank = q3.rank AND q1.doc_id=q3.doc_id)
  FULL JOIN q4 ON (q1.rank = q4.rank AND q1.doc_id=q4.doc_id)
J'ai essayé avec 1 UNION mais c'est pas top
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
(SELECT
  T1.VALUE 
  T2.VALUE 
  T3.value
  T4.value
  FROM q1
  left JOIN q2 ON (q1.rank = q2.rank AND q1.doc_id=q2.doc_id)
  left JOIN q3 ON (q1.rank = q3.rank AND q1.doc_id=q3.doc_id)
  left JOIN q4 ON (q1.rank = q4.rank AND q1.doc_id=q4.doc_id))
UNION
(SELECT
  T1.VALUE 
  T2.VALUE 
  T3.value
  T4.value
  FROM q1
  right JOIN q2 ON (q1.rank = q2.rank AND q1.doc_id=q2.doc_id)
  right JOIN q3 ON (q1.rank = q3.rank AND q1.doc_id=q3.doc_id)
  right JOIN q4 ON (q1.rank = q4.rank AND q1.doc_id=q4.doc_id));
Auriez-vous une idée de résoudre ce problème sans utiliser de programme java ?

Merci d'avance,
Blured.