Problème de requête

Problème de requête - SQL/NoSQL - Programmation

Marsh Posté le 01-11-2004 à 14:04:17    

Bonjour à tous,
 
je craques avec une requête à la con que je n'arrive pas à faire.
Alors en gros, voici la situation :
j'ai 2 tables, une table Référentiel et une table Données.
Dans ma table Référentiels, j'ai une seule colone "Valeur" contenant par exemple, A, B, C, D, E, .... , Z
et dans ma table Données j'ai :  
  Date      Valeur
28/09/2004    A
28/09/2004    C
28/09/2004    E
28/09/2004    R
28/09/2004    T
29/09/2004    A
29/09/2004    B
29/09/2004    C
29/09/2004    D
29/09/2004    E
 
Mon problème est de ressortir pour chaque date, les valeur qui sont dans le référentiel mais qui ne sont pas dans la table Données.
Par exemple, pour le 28/09/2004, je veux que ça me donne, B, D, F etc etc
 
pliiizz, heeeelp
Merci d'avance

Reply

Marsh Posté le 01-11-2004 à 14:04:17   

Reply

Marsh Posté le 01-11-2004 à 15:41:58    

Y a sans doute meilleur, mais dans un premier jet je verrais ceci:

Code :
  1. SELECT Complete.Date, Complete.value
  2. FROM
  3.   (SELECT Data.date, Values.value
  4.   FROM Data, Values) AS Complete LEFT OUTER JOIN Data
  5.   ON ((Data.date, Data.value) = (Complete.date, Complete.value))
  6. WHERE Data.date IS NOT NULL
  7. ORDER BY Complete.date, Complete.value
  8. ;

Reply

Marsh Posté le 01-11-2004 à 16:20:03    

Merci beaucoup pour ta réponse mais Access me sort une erreur au niveau du SELECT après le FROM...
Il a pas l'air d'imer l'imbriquation...


Message édité par phleup le 01-11-2004 à 16:33:16
Reply

Marsh Posté le 01-11-2004 à 17:34:18    

et le pb c'est que ça marche à peu près pour s'il y a une date unique dans ma table mais dès qu'il y a plusieurs dates, le resultat est vide...

Reply

Marsh Posté le 01-11-2004 à 20:06:13    

J'ai l'impression que Gizmo t'as donné la réponse "à l'envers". Essaie avec "IS NULL" et non pas "IS NOT NULL"
 
Ceci-dit, à première vue, c'est pas tout à fait complète.
 
Je regarde ça de plus près :)

Reply

Marsh Posté le 01-11-2004 à 20:12:29    

exact, c'est avec IS NULL et non IS NOT NULL, ca m'apprendra à ne pas me relire. Et il faudrait également rajouter un DISTINCT sur le resultset du select imbriqué.
 
Maintenant, il faut voir au niveau de la syntaxe d'access, il a sans doute des changements à faire.

Reply

Marsh Posté le 01-11-2004 à 20:53:23    

Chuis en train de voir que c'est très ballo que INTERSECT n'existe pas sur les produits M$ :) Parceque sinon c'était tout bête :)
 

SELECT REF.ID, DONNEES.DAT
FROM DONNEES, REF
INTERSECT
SELECT REF.ID, DONNEES.DAT
FROM DONNEES, REF
WHERE DONNEES.IDR = REF.ID


 
 
Bon, ce truc m'à l'air de marcher (mais ça doit être améliorable, parceque c'est bien crade ^^)
 

SELECT DISTINCT D1.DAT, R1.ID
FROM DONNEES D1, REF R1
WHERE R1.ID + cast(D1.DAT as varchar) NOT IN (SELECT D2.IDR + cast(D2.DAT as varchar) FROM DONNEES D2)


Reply

Marsh Posté le 01-11-2004 à 20:55:40    

gizmo a écrit :

exact, c'est avec IS NULL et non IS NOT NULL, ca m'apprendra à ne pas me relire. Et il faudrait également rajouter un DISTINCT sur le resultset du select imbriqué.
 
Maintenant, il faut voir au niveau de la syntaxe d'access, il a sans doute des changements à faire.


Ouais, mais j'ai aussi l'impression que tu pars du principe que "Complete" contient une colonne date. Je n'en ai pas l'impression en fait.
C'est là que tout ce complique en fait (sinon un simple select sur le complete avec un not exists sur l'autre table et c'était torché :))

Reply

Marsh Posté le 01-11-2004 à 20:59:07    

yeah merci les gars !!

Reply

Marsh Posté le 01-11-2004 à 21:00:06    

Bah oui, vu que c'est moi qui crée complete dans la sous requète avec les dates.
 
Edit, mais effectivement le intersect aurait été sans doute moins lourd.


Message édité par gizmo le 01-11-2004 à 21:01:58
Reply

Marsh Posté le 01-11-2004 à 21:00:06   

Reply

Marsh Posté le 02-11-2004 à 11:35:04    

gizmo a écrit :

Bah oui, vu que c'est moi qui crée complete dans la sous requète avec les dates.
 
Edit, mais effectivement le intersect aurait été sans doute moins lourd.


En effet, j'avais mal lu ta requête :jap:

Reply

Sujets relatifs:

Leave a Replay

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