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.
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...
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 :
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 :
... 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
Partager