Bij het gebruik van een LEFT JOIN loop ik tegen een probleem aan, waar ik niet uit kom...
Van table1 wil ik een compleet overzicht met alleen de koppeling uit table2 met de jongste datum/tijd.
Hieronder de export van een voorbeeld:
Onderstaande query heb ik wel, maar daarin zie je dubbele records uit table1:
Uitkomst van bovenstaande query:
Heeft iemand een idee hoe deze query uit te breiden zodat ik alleen de records terug krijg uit table1 en de jongste datum/tijd (in_date_time) uit table2?
Onderstaand resultaat moet er eigenlijk uit komen:
Alvast bedankt!
Van table1 wil ik een compleet overzicht met alleen de koppeling uit table2 met de jongste datum/tijd.
Hieronder de export van een voorbeeld:
SQL:
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
| CREATE TABLE table1 ( id Int IDENTITY NOT NULL, name Char(50), CONSTRAINT PK_table1 PRIMARY KEY CLUSTERED ( id ) ) COMMIT; CREATE TABLE table2 ( id Int IDENTITY NOT NULL, table1_id Int, in_date_time DateTime NOT NULL, CONSTRAINT PK_table2 PRIMARY KEY CLUSTERED ( id ) ) COMMIT; ALTER TABLE dbo.table2 ADD CONSTRAINT DF_table2_in_date_time DEFAULT getdate() FOR in_date_time COMMIT; INSERT INTO table1(id, name) VALUES (1, 'sander'); INSERT INTO table1(id, name) VALUES (2, 'willem'); INSERT INTO table1(id, name) VALUES (3, 'paul'); INSERT INTO table1(id, name) VALUES (4, 'dick'); INSERT INTO table2(id, table1_id, in_date_time) VALUES (2, 1, '12/09/2008 16:05:21.000'); INSERT INTO table2(id, table1_id, in_date_time) VALUES (3, 1, '12/09/2008 16:10:21.000'); INSERT INTO table2(id, table1_id, in_date_time) VALUES (4, 1, '12/09/2008 16:30:21.000'); INSERT INTO table2(id, table1_id, in_date_time) VALUES (5, 2, '12/10/2008 10:05:21.000'); INSERT INTO table2(id, table1_id, in_date_time) VALUES (6, 2, '12/10/2008 10:03:21.000'); INSERT INTO table2(id, table1_id, in_date_time) VALUES (7, 3, '12/07/2008 15:05:21.000'); |
Onderstaande query heb ik wel, maar daarin zie je dubbele records uit table1:
SQL:
1
2
3
4
| SELECT t1.*, t2.in_date_time FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.id = t2.table1_id |
Uitkomst van bovenstaande query:
id | name | in_date_time |
1 | sander | 09/12/2008 16:05:21 |
1 | sander | 09/12/2008 16:10:21 |
1 | sander | 09/12/2008 16:30:21 |
2 | willem | 10/12/2008 10:05:21 |
2 | willem | 10/12/2008 10:03:21 |
3 | paul | 07/12/2008 15:05:21 |
4 | dick | null |
Heeft iemand een idee hoe deze query uit te breiden zodat ik alleen de records terug krijg uit table1 en de jongste datum/tijd (in_date_time) uit table2?
Onderstaand resultaat moet er eigenlijk uit komen:
id | name | in_date_time |
1 | sander | 09/12/2008 16:30:21 |
2 | willem | 10/12/2008 10:05:21 |
3 | paul | 07/12/2008 15:05:21 |
4 | dick | null |
Alvast bedankt!