Ämne: JOIN på date
Visa ett inlägg
Oläst 2005-01-08, 14:46 #7
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Funkar inte?
Kod:
SELECT
  T1.*,
  T2.*
  FROM Tabell1 T1
  JOIN Tabell2 T2 ON convert(char(10), T1.datum, 102) = convert(char(10), T2.datum, 102)
  WHERE
   ...etc...etc
och alltså en join som du gör kommer begränsa resultatet till bara de rader där T1.datum=T2.datum existerar.

left/outer joins är ett måste om du vill ha "null där värde saknas", således måste du låte en tabell styra över den andra.

Om du verkligen inte har någon tabell som styr så får du nog köra en union enligt principen: Välj alla som har matchning UNION alla som bara finns i T1 UNION alla som bara finns i T2.

Kod:
select T1.*, T2.* FROM T1, T2 WHERE convert(char(10), T1.datum, 102) = convert(char(10), T2.datum, 102)
UNION
select T1.*, T2.* FROM T1, T2 WHERE convert(char(10), T1.datum, 102) =* convert(char(10), T2.datum, 102) AND convert(char(10), T2.datum, 102) not in (select convert(char(10), T2.datum, 102) FROM T1, T2 WHERE convert(char(10), T1.datum, 102) = convert(char(10), T2.datum, 102))
UNION
select T1.*, T2.* FROM T1, T2 WHERE convert(char(10), T1.datum, 102) *= convert(char(10), T2.datum, 102) AND convert(char(10), T1.datum, 102) not in (select convert(char(10), T1.datum, 102) FROM T1, T2 WHERE convert(char(10), T1.datum, 102) = convert(char(10), T2.datum, 102))
Något i den stilen borde göra jobbet, men frågan är om det inte är enklare (nu när du saknar "styrtabell") plocka ut resultat för resultat loopa igenom datumen manuellt och skapa den output du vill ha. Ett alternativ till UNION är ju så klart att lägga resultetaten i en temptabell och bygga upp det färdiga resultetatet den vägen, lämpligen i en SP.
eg0master är inte uppkopplad   Svara med citatSvara med citat