30. januar 2002 - 21:06Der er
18 kommentarer og 1 løsning
lidt speciel select
Hej Jeg vil gerne lave en lidt speciel select, her er hvordan min db ser ud. tabel1 har følgende felter: navn: text nummer: int
Tabel2 har følgende felter: nummer: int sdato: date
I tabel2 er der flere med samme nummer men forskellige sdato. Det jeg gerne vil er at lave en "select" hvor jeg får navn og den højeste sdato og de to tabeller skal mantches sammen med nummer.
Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
>entracore: Du får altid samme MaxOfsDato (for alle navne, da du ikke sammenkæder dit join). Hvis du endelig vil have ,-join så skal du huske at sige WHERE tabel1.nummer=tabel2.nummer, for at den vil virke efter hensigten...
not good The tip from Terry worked on my example but, my example was too simple. Table 2 is actual like this: Tabel2 1 2-3-2002 a 1 6-3-2002 b 2 7-1-2001 b 3 8-4-2000 b 3 9-9-2001 a 3 1-10-2002 b
And my select select shall return name, newest date for the person and if the newest date is an a or b date.
vanggaard>I dont mind taking a look at the EXTRA question, but the answer I gave was for the ORIGINAL question.
SELECT tabel1.navn, Max(tabel2.dato) AS MaxOfdato, First(tabel2.AorBfld) AS AorB FROM tabel1 INNER JOIN tabel2 ON tabel1.nummer = tabel2.nummer GROUP BY tabel1.nummer, tabel1.navn;
SELECT tabel1.navn, tabel2.dato, tabel2.AorB FROM tabel1 INNER JOIN tabel2 ON tabel1.nummer = tabel2.nummer WHERE tabel2.dato=(SELECT Max(Dato) FROM Tabel2 WHERE nummer=tabel1.nummer)
I was a bit unsure as to whethe or or not it was OK, I normally check my work but didnt bother today :o( perhaps you should post an aanswer and vanggaard should UP the points :o)
proacces> Are you sure about the answer (08:14:44) ? If I use the select I get an empty answer :( terry> I'll give all of you 100 point when I have solve my problem. OK?
SELECT Tabel1.navn, Tabel2.sdato, Tabel2.type FROM Tabel1 INNER JOIN Tabel2 ON Tabel1.nummer=Tabel2.nummer WHERE Tabel2.sdato=(SELECT MAX(sdato) FROM Tabel2 WHERE nummer=Tabel1.nummer)
det kan være der var en fejl i navnet på dit datofelt... hér hedder det sdato. ellers skulle den være rigtig!
Hvis du ikke bruger Acc2000, så kan du heller ikke bruge SUB-SELECT på den måde...
så må du prøve med:
SELECT Tabel1.navn, Tabel2.sdato, Tabel2.type FROM Tabel1 INNER JOIN Tabel2 ON Tabel1.nummer=Tabel2.nummer WHERE Tabel2.sdato=DMax('(sdato)','Tabel2','nummer=' & Tabel1.nummer);
Jeg tror sgu' det virker nu.... Jeg brugte proaccess svar (08:17:45) med en lille ændring. Istedet for SELECT Max(sdato) FROM Tabel2...... skrev jeg SELECT Max(tabel2.sdato) FROM Tabel2 og nu ser det ud til at virke. Jeg laver lige lidt test og vender tilbage
terry> I have made a new question so you can get your 100 points
Mange tak for hjælpen, det virker bare :) Jeg har dog et lille spg til hvordan jeg kan udvide den SELECT, men det har jeg lavet et nyt spq til. Vanggaard
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.