Bonjour à toutes et à tous,

Je cherche à faire une requête entre 7 tables différentes dont les résultats de 2 tables doivent apparaître sur une seule ligne...

Pour commencer, prenons les 2 tables qui doivent sortir un résultat sur une ligne.

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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
Table Tools
-----------
ID : 1 | Nr : 100 | Pos : -3 | PartID : 500
ID : 2 | Nr : 100 | Pos : -2 | PartID : 558
ID : 3 | Nr : 100 | Pos : -1 | PartID : 598
ID : 4 | Nr : 100 | Pos : 0 | PartID : 523
ID : 5 | Nr : 456 | Pos : -2 | PartID : 436
ID : 6 | Nr : 456 | Pos : -1 | PartID : 764
ID : 7 | Nr : 456 | Pos : 0 | PartID : 534
ID : 8 | Nr : 456 | Pos : 1 | PartID : 512
ID : 9 | Nr : 870 | Pos : -4 | PartID : 700
ID : 10 | Nr : 870 | Pos : -3 | PartID : 723
ID : 11 | Nr : 870 | Pos : -2 | PartID : 670
ID : 12 | Nr : 870 | Pos : -1 | PartID : 821
ID : 13 | Nr : 870 | Pos : 0 | PartID : 450
ID : 14 | Nr : 870 | Pos : 1 | PartID : 370
...
 
Table Part
----------
ID : 500 | Name : '00.001.032'
ID : 558 | Name : '00.041.042'
ID : 598 | Name : '00.101.002'
ID : 523 | Name : '01.001.054'
ID : 436 | Name : '04.031.035'
ID : 764 | Name : '05.034.03'
ID : 534 | Name : '01.034.02'
ID : 512 | Name : '05.041.03'
ID : 700 | Name : '07.341.33'
ID : 723 | Name : '08.064.63'
ID : 670 | Name : '11.048.70'
ID : 821 | Name : '15.028.89'
ID : 450 | Name : '16.035.75'
ID : 370 | Name : '07.056.60'
Pour vous donner un chemin de recherche j'ai fait ceci qui fonctionne mais que je ne peux pas utiliser...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
WITH CTE AS 
(
    SELECT Nr, PartID, Pos,
	(SELECT MIN(Pos) FROM Tools WHERE Nr = 456) PMin,
	(SELECT MAX(Pos) FROM Tools WHERE Nr = 456) PMax
	FROM Tools
	WHERE Nr = 456
    GROUP BY Pos, Nr, PartID
)
SELECT 
tmin.*, tmax.* FROM CTE tmin
INNER JOIN CTE tmax ON tmax.Nr = tmin.Nr AND tmin.Pos = tmin.PMin AND tmax.Pos = tmax.PMax
Ceci génère le résultat suivant que je recherche :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Nr   | Pos | PartID | PMin | PMax | Nr  | Pos | PartID | PMin | PMax
--------------------------------------------------------------------
456  | -2  | 436    | -2   | 1    | 456 | 1   | 512    | -2   | 1
Ensuite il faut encore faire une jointure avec la table "Part" pour résoudre le PartID avec le nom "Name"...

Le problème est que je ne peux pas utiliser les CTE ni les jointures à conditions multiples genres :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
... ON (Expression1) AND (Expression2) AND ...
Le résultat sert à obtenir un report avec "Stimulsoft Report"...

Avez-vous une idée comment résoudre ce casse-tête ?

D'avance merci pour votre aide.

Cordialement,
Didier