Avatar billede bingokaj Nybegynder
28. oktober 2003 - 20:13 Der er 8 kommentarer og
1 løsning

Select nyeste dato fra flere tabeller

Hej Alle

Jeg skal lave en lille tekst bunden af et website der fortæller hvornår websitet senest er blevet opdateret.

Derfor har jeg brug for at selecte den nyeste dato baseret på data fra flere tabeller i en MySQL-db. Tabellerne hedder av, content, pages, banner og kurser. Alle tabellerne indeholder en dato-kolonne. Jeg skal altså bruge den nyeste dato, udvalgt fra ovenstående tabeller.
Anyone ?
Avatar billede Slettet bruger
28. oktober 2003 - 20:15 #1
ved ikke om det virker men prøv med
SELECT DISTINCT MAX(dato) FROM av, content, pages, banner og kurser
Avatar billede bingokaj Nybegynder
28. oktober 2003 - 20:17 #2
virker ikke, db'en bliver forvirret mht. hvilken dato-kolonne den skal sortere ud fra
Avatar billede arne_v Ekspert
28. oktober 2003 - 20:19 #3
Hvis MySQL 4.0 så prøv:

(SELECT dato FROM av)
UNION
(SELECT dato FROM content)
UNION
(SELECT dato FROM pages)
UNION
(SELECT dato FROM banner)
UNION
(SELECT dato FROM kurser)
ORDER BY dato LIMIT 1
Avatar billede Slettet bruger
29. oktober 2003 - 00:33 #4
Hvis < MySQL 4.0:

CREATE TEMPORARY TABLE tmp (dato date);
INSERT INTO tmp SELECT MAX(dato) FROM av;
INSERT INTO tmp SELECT MAX(dato) FROM content;
INSERT INTO tmp SELECT MAX(dato) FROM pages;
INSERT INTO tmp SELECT MAX(dato) FROM banner;
INSERT INTO tmp SELECT MAX(dato) FROM kurser;
SELECT MAX(dato) FROM tmp;
DROP TABLE tmp;
Avatar billede bingokaj Nybegynder
29. oktober 2003 - 23:06 #5
> Blackadder, jeg har prøvet med nedenstående kode, men jeg får følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[MySQL][ODBC 3.51 Driver][mysqld-3.23.52-nt]You have an error in your SQL syntax near ')' at line 1
/v2/includes/functions.asp, line 667

objConnection.execute "CREATE TEMPORARY TABLE tmp (dato date)"
objConnection.execute "INSERT INTO tmp SELECT MAX(dato) FROM av"
objConnection.execute "INSERT INTO tmp SELECT MAX(dato) FROM content"
objConnection.execute "INSERT INTO tmp SELECT MAX(dato) FROM pages"
objConnection.execute "INSERT INTO tmp SELECT MAX(dato) FROM banner"
objConnection.execute "INSERT INTO tmp SELECT MAX(dato) FROM kurser"
objConnection.execute "SELECT MAX(dato) FROM tmp"
nyestedato = objConnection.execute("dato")
objConnection.execute "DROP TABLE tmp"
Avatar billede bingokaj Nybegynder
29. oktober 2003 - 23:07 #6
min mySQL = 3.23.52
Avatar billede Slettet bruger
30. oktober 2003 - 16:26 #7
Prøv at tilføje et semikolon efter den sidste højreparantes.

Hvis det ikke er det, så har jeg ikke flere forslag. Det burde virke på MySQL
version 3.23 og fremefter

Se:
http://www.mysql.com/doc/en/CREATE_TABLE.html
Avatar billede bingokaj Nybegynder
30. oktober 2003 - 18:26 #8
Fik det til at virke med nedenstående kode. Du får pointene, blackadder :-)

Sub GetUpdate ()
objConnection.execute "CREATE TEMPORARY TABLE tmp (dato date)"
objConnection.execute "INSERT INTO tmp SELECT MAX(dato) FROM av"
objConnection.execute "INSERT INTO tmp SELECT MAX(dato) FROM content"
objConnection.execute "INSERT INTO tmp SELECT MAX(dato) FROM pages"
objConnection.execute "INSERT INTO tmp SELECT MAX(dato) FROM banner"
objConnection.execute "INSERT INTO tmp SELECT MAX(dato) FROM kurser"
SQLstmt = "SELECT MAX(dato) AS mindato FROM tmp"
Set rs = objConnection.Execute(SQLstmt)
nyestedato = rs("mindato")
objConnection.execute "DROP TABLE tmp"
%>
<span class="tekst04">Denne hjemmeside blev sidst opdateret d. <%=nyestedato%></span>
<%
End Sub
Avatar billede Slettet bruger
30. oktober 2003 - 20:09 #9
Ok, tak for point :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester