webForumDet fria alternativet

QUERY-fråga

Databaser & SQL

3 svar · 628 visningar · startad av HammerBoy

Medlem sedan feb. 2006144 inlägg
Frågan#1

Tänk er följande tabell:

tblLog
Id Name Time
1 Anders 2011
2 Anders 2010
3 Bosse 2010
4 Bosse 2010
5 Conny 2010
6 Conny 2011
7 Conny 2009
8 David 2010
9 David 2009

Jag vill skapa en sökning där jag kan få ut alla Name som endast har Timestamps som är äldre än 2011 så svaret jag vill få ut i det här exemplet är följande:

Name
Bosse
David

Nu har jag stångat min panna blodig men kommer inte i mål samtidigt som jag gissar att det säkerligen sitter någon här som rätt enkelt kan pilla ihop denna query och ge mig en fin julklapp :)

(Tabellen är självklart konstruerad för att förenkla frågeställningen)

Medlem sedan feb. 2006144 inlägg
#2

Ibland är en god lunch allt som behövs. Jag lyckades få ihop detta till slut.
God Jul!

Medlem sedan juni 200032 967 inlägg
#3

Posta gärna lösningen och markera tråden som löst.

Mvh

Medlem sedan aug. 20039 340 inlägg
#4

En lösning är...

SELECT name FROM tblLog
WHERE name NOT IN (
  SELECT name FROM tblLog WHERE Time >= 2011
) AND Time < 2011
GROUP BY Name

Det ska även gå att använda mönstret self left join/is null, vilket möjligen är bättre ur prestandasynpunkt.

262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)