jointure de table a double condition sur un select
Bonjour,
je dois croiser deux tableau ayant deux caracteristiques identique...
et je ne vois plsu comment faire...
quelque un saurais?
genre :
Code:
1 2 3 4 5 6 7 8 9 10
| SELECT dbo.F_COMPTET.CT_Intitule, dbo.F_COMPTET.CT_Siret, dbo.F_ECRITUREC.EC_Date, dbo.F_ECRITUREC.EC_RefPiece, dbo.F_ECRITUREC.EC_Intitule,
dbo.F_ECRITUREC.EC_Montant, dbo.F_ECRITUREC.EC_Sens, dbo.F_ECRITUREC.EC_Lettrage
FROM dbo.F_COMPTET LEFT OUTER JOIN
dbo.F_ECRITUREC ON dbo.F_COMPTET.CT_Num = dbo.F_ECRITUREC.CT_Num
WHERE (dbo.F_ECRITUREC.EC_Sens IS NOT NULL) AND (dbo.F_ECRITUREC.EC_Lettrage AND F_ECRITUREC.CT_Num IN
(SELECT F_ECRITUREC_1.EC_Lettrage, F_ECRITUREC_1.CT_Num
FROM dbo.F_COMPTET AS F_COMPTET_1 LEFT OUTER JOIN
dbo.F_ECRITUREC AS F_ECRITUREC_1 ON F_COMPTET_1.CT_Num = F_ECRITUREC_1.CT_Num
WHERE (F_COMPTET_1.CT_Num LIKE '41LM%') AND (F_ECRITUREC_1.EC_Sens IS NOT NULL) AND (F_ECRITUREC_1.EC_Lettrage <> '') AND
(F_ECRITUREC_1.EC_RefPiece = '5260122846'))) |
regardez l'horreur que j'ai mise:
au niveau de la jointure, avant le "IN" j'ai deux conditions qui doivent se retrouver dans le select suivant...
merci d'avance
Table_Dee et Table_Dum : le retour.
Citation:
Envoyé par
pacmann
En fait, si on pouvait autoriser puis étendre la sélection sur table_dee, qui selon vos propos se ferait par :
Alors on pourrait étendre les règles de l'analyseur syntaxique à
Et donc considérer qu'on peut avoir une projection vide d'un ensemble de lignes non vide... (c'est peut être des énormes conneries, mais bon)
Je vois que vous n’avez pas oublié l’existence des inséparables Table_Dee et Table_Dum (cf. le message auquel vous faites allusion).
Du point de vue de la théorie relationnelle, Table_Dee et Table_Dum sont des relations de degré 0. Table_Dee contient un seul tuple, à savoir le 0-tuple, tandis que Table_Dum ne contient aucun tuple.
Si j’utilise le langage Tutorial D, la projection de la relation TaTable sur les attributs X, Y, ..., Z s’écrit ainsi :
TaTable {X, Y, ..., Z}
Et selon la théorie relationnelle, il est parfaitement légal et légitime de formuler ainsi l’équivalent de votre requête :
TaTable {} ;
Date et Darwen appellent cette projection la nullary projection.
Si la relation TaTable est vide de tuples, la relation obtenue par cette projection est vide elle aussi, et il s’agit alors de Table_Dum, sinon la relation obtenue est Table_Dee.
Si TaTable n’est pas vide et que l’on cherche un résultat vide, alors on écrira par exemple — WHERE étant l’opérateur de restriction :
(TaTable WHERE false) {} ;
Citation:
Envoyé par
pacmann
Cela dit, comme l'opération est vraiment particulière, on pourrait envisager de la définir directement comme un opérateur relationnel de "semi-jointure".
(Je ne tire pas l'idée du chapeau, mais j'y pense parce qu'Oracle et certainement d'autres donnent ce nom à l'opération réalisée sur EXISTS)
Je conviens. Confidence pour confidence, dans mon message en référence, l’expression "SELECT FROM ;" n’est pas de moi mais de Darwen, même chose pour les expressions ";" et "SELECT FROM WHERE false ;" (cf. "The Nullogist in Relationland" (C. J. Date & H. Darwen. Relational Database Writings 1989-1991 (Reading, Mass.: Addison-Wesley, 1992)).