webForumDet fria alternativet

Problem med att få rätt datum fån tabell2

Databaser & SQL

4 svar · 413 visningar · startad av CatZ

Medlem sedan jan. 20022 440 inlägg
Frågan#1

Jag har en gigantisk view som nog inte gör sig så bra här på forumet så jag ska försöka förenkla lite. Låt oss säga att jag har två tabeller table1 och table2. Nu behöver jag hämta 2 fält från table1, col och [date]. Sedan vill jag hämta 1 fält från table2, date här också. Problemet är bara att det datumet jag vill hämta från table2 måste vara det senaste förekommande före sista förekomsten av datumet i table1.

Jag kan hämta det senaste förekommande datumet i table2 genom att använda max men hur ska jag se till att detta datum är mindre än datumet som hämtas från table1?

select 
	table1.col
	,table1.[date]
	,max(table2.[date])
from
	table1 left outer join
	table2 on table1.ID = table2.table1ID

ger mig INTE det datumet som jag försöker komma åt....

Medlem sedan dec. 200012 464 inlägg
#2
select 
	table1.col
	,table1.[date]
	,(select max(table2.[date])
             from table2
            where table2.[date] < table1.[date]
                and table1.id = table2.id)
from table1
Medlem sedan jan. 20022 440 inlägg
#3

Det var precis vad jag försökte med innan jag frågade. Tyvärr fick jag inte till det i min o-hanterbara View. Testade ditt förslag med bara de två berörda tabellerna och det fungerade. Sedan var det bara att snygga till Viewn. Synd att Management Studio ska mixtra med designen på queryn.

Medlem sedan jan. 20022 440 inlägg
#4
select 
	table1.col
	,table1.[date]
	,(select max(table2.[date])
             from table2
            where table2.[date] < table1.[date]
                and table1.id = table2.id)
from table1

Hur ser jag till att bara få senaste raden från table1 i det här läget? Jag har försökt med group by och distinct men det vill inte fungera.

Medlem sedan dec. 200012 464 inlägg
#5
select  top 1
	table1.col
	,table1.[date]
	,(select max(table2.[date])
             from table2
            where table2.[date] < table1.[date]
                and table1.id = table2.id)
from table1 
order by [date] desc
256 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)