SELECT et NULL discriminatoire [résolu]/ Cumuler L/R join [pas résolu]

SELECT et NULL discriminatoire [résolu]/ Cumuler L/R join [pas résolu] - SQL/NoSQL - Programmation

Marsh Posté le 01-07-2004 à 16:11:45    

Bonjour,
Sur une base de données Access 97 je fais la requête suivante :

Code :
  1. SELECT [T_B].[Nom], [T_C].[Titre] FROM [T_B], [T_C], [T_A] WHERE [T_B].[NoID] = [T_A].[NoID_T_B] AND [T_C].[NoID] = [T_A].[NoID_T_A] AND [T_A].[NoID]=4


 
Les tables sont en liaison suivant le "schéma" suivant :  
[T_B] <--   [T_A]   --> [T_C]    
NoID        NoID        NoID     (clefs primaires)
            NoID_T_B             (clef étrangère en provenance de T_B)
            NoID_T_C             (clef étrangère en provenance de T_C)
 
Voici le problème :  
Lorsque [T_B].[NoID] ou [T_C].[NoID] est à NULL mon SELECT ne me renvoie rien même si l'autre champ est renseigné...
 
Y a-t-il un moyen de récupérer un NULL dans [T_B].[Nom] ou [T_C].[Titre] lorsque le NoID (de [T_B] ou [T_C]) est à NULL ???
 
EDIT
J'ai viré une info erronée : les infos de [T_B] et [T_C] complètent celles de [T_A] (et [T_A] n'est pas une table de jointure)
 
***********************************************************************
Cumuler L/R join : http://forum.hardware.fr/hardwaref [...] tm#t784523
 


Message édité par Gaxx le 02-07-2004 à 11:15:31
Reply

Marsh Posté le 01-07-2004 à 16:11:45   

Reply

Marsh Posté le 01-07-2004 à 16:40:29    

Regarde du côté de :
LEFT/RIGHT OUTER JOIN


Message édité par Arjuna le 01-07-2004 à 16:40:37
Reply

Marsh Posté le 01-07-2004 à 18:11:51    

Arjuna a écrit :

Regarde du côté de :
LEFT/RIGHT OUTER JOIN


 
Merci  :jap:  
J'avais déjà vu l'aide sur les jointures et j'avais trouvé ça rebutant ... Et après l'avoir lu avec attention, je confirme ça l'est ! C'est tout de même dommage de devoir passer par les jointures pour ça alors que dans le cas contraire (ne pas vouloir les NULL) il suffirait de rajouter une clause beaucoup plus simple...
 
Mais voilà la solution :  
 

Code :
  1. SELECT [T_B].[Nom], [T_C].[Titre]
  2. FROM [T_B]
  3. INNER JOIN (
  4. [T_A]
  5. LEFT OUTER JOIN [T_C] ON [T_A].[NoID_T_C] = [T_C].[NoID] )
  6. ON [T_B].[NoID] = [T_A].[NoID_T_B]
  7. WHERE [T_A].[NoID] = 4


Reply

Marsh Posté le 01-07-2004 à 21:59:37    

Bah avec Oracle ou SQL Server t'as pas besoin d'utiliser cette syntaxe rébarbative.
 
Mais je ne crois pas qu'Access supporte la syntaxe SQL Server...

Reply

Marsh Posté le 02-07-2004 à 11:05:03    

Arjuna a écrit :

Bah avec Oracle ou SQL Server t'as pas besoin d'utiliser cette syntaxe rébarbative.
 
Mais je ne crois pas qu'Access supporte la syntaxe SQL Server...


 
Tu me rassure car j'ai appris le SQL sous Oracle et il me semblai ne pas avoir besoin de ce type de syntaxe. Or depuis que je bosse sous Access j'ai l'impression de ne pas connaître le SQL  :pt1cable: ...
 
EDIT :  
Y a-t-il moyen de récupérer plusieurs champs à NULL en cumulant les LEFT/RIGHT JOIN ? J'ai des messages d'erreur à chaque fois que je tente de cumuler ces jointures et j'ai la désagréable sensation qu'il est impossible de le faire...


Message édité par Gaxx le 02-07-2004 à 11:08:18
Reply

Marsh Posté le 02-07-2004 à 11:07:34    

pour les inner join, la syntaxe d'oracle marche très bien.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed