Avatar billede sthen Nybegynder
05. oktober 2003 - 11:44 Der er 12 kommentarer og
1 løsning

Hjælp til select

Håber ikke at dette er så svært, men min hjerne mangler tilsyneladende et kickstart her til morgen.

Jeg har en masse tidsskrifter liggende i et bibliotek. Vil gerne have sorteret dem automatisk i en "nye tidsskrifter" og "arkiv-del" v.hj.a. en select.

Hvordan skruer jeg min select sammen, så jeg vælger alle årgange minus seneste årgang (typisk - den fra i år); altså noget i stil med:

SELECT (årgang-sidste årgang) FROM blad WHERE ... ORDER BY ...

Skal nævnes at min tabel består af tre felter med feltnavnene id, årgang og nummer
Avatar billede sthen Nybegynder
05. oktober 2003 - 11:45 #1
Det er altså "arkiv-delen" jeg ikke kan hitte ud af selecten til
Avatar billede whatever Nybegynder
05. oktober 2003 - 11:46 #2
SELECT * FROM blad WHERE årgang < sidste årgang
Avatar billede sthen Nybegynder
05. oktober 2003 - 11:47 #3
ja det er jeg nok klar over, men jeg ønsker at det skal køre pr automatik, således at når jeg i 2004 uploader 1. blad, så ryger alle blade fra 2003 over i arkiv-delen uden at jeg skal røre en finger
Avatar billede whatever Nybegynder
05. oktober 2003 - 11:53 #4
SELECT * FROM blad WHERE årgang < YEAR(CURDATE())
Avatar billede whatever Nybegynder
05. oktober 2003 - 11:54 #5
Jeg går du fra at dine årgange ligger med 4 cifre. Altså 2003 og ikke 03.
Avatar billede sthen Nybegynder
05. oktober 2003 - 11:58 #6
Ja det gør de, men hvis jeg anvender det sidste du skriver, så vil skiftet vel ske ved årsskiftet og ikke når der først kommer et nyt nummer i f.eks. år 2004.
1. blad for 2004 udkommer måske først i slutningen af januar, og det vil så betyde, at seneste årgang er tom i en måneds tid.
Avatar billede sthen Nybegynder
05. oktober 2003 - 12:01 #7
Altså ønsker jeg noget i stil med:
SELECT * FROM blad WHERE årgang < max(årgang)
Avatar billede whatever Nybegynder
05. oktober 2003 - 12:17 #8
MySQL har indbygget en MAX() funktion, men kan umiddelbart ikke benyttes på den måde.

Så jeg ville nok lave to SQL-kald.

$res_max = mysql_query("SELECT max(årgang) FROM blad");
list ($max_årgang) = mysql_fetch_row($res_max);
$res_arkiv = mysql_query("SELECT * FROM blad WHERE årgang < $max_årgang");
Avatar billede sthen Nybegynder
05. oktober 2003 - 12:34 #9
<?
include('connect/connect.php');
($res_max = mysql_query("SELECT max(årgang) FROM blad"))|| die(mysql_error());
list ($max_årgang) = mysql_fetch_row($res_max);
$res_arkiv = mysql_query("SELECT * FROM blad WHERE årgang < $max_årgang"); {
echo $res_arkiv['årgang']." ".$res_arkiv['nummer']."<br><br>";
}
?>

Dette giver desværre intet output til trods for at der burde ligge ca. 20 numre i arkiv.
Avatar billede whatever Nybegynder
05. oktober 2003 - 12:46 #10
prøv at smide en or die (mysql_error()) efter den sidste sql-query.
Avatar billede sthen Nybegynder
05. oktober 2003 - 12:57 #11
Der skal vel køre en while-sætning ud fra den sidste select, men nedensående select giver ingen fejl - men heller intet output:

<?
include('connect/connect.php');

($res_max = mysql_query("SELECT max(årgang) FROM sammen"))|| die(mysql_error());
list ($max_årgang) = mysql_fetch_row($res_max);

while($res_arkiv = mysql_query("SELECT * FROM sammen WHERE årgang < $max_årgang"|| die(mysql_error()))) {
echo $res_arkiv['årgang']." ".$res_arkiv['nummer']."<br><br>";
}
?>

Bladet hedder "sammen" derfro denne lille ændring fra tidligere, men så kan jeg lave en 100% copy->paste
Avatar billede whatever Nybegynder
05. oktober 2003 - 13:02 #12
<?php
    include("connect/connect.php");

    $res_max = mysql_query("SELECT max(årgang) FROM sammen") or die(mysql_error());
    list ($max_årgang) = mysql_fetch_row($res_max);
   
    $res_arkiv = mysql_query("SELECT * FROM sammen WHERE årgang < $max_årgang") or die(mysql_error());
    while($row_arkiv = mysql_fetch_array($res_arkiv)) {
        echo "$row_arkiv[årgang] $row_arkiv[nummer]<br /><br />";
    }
?>
Avatar billede sthen Nybegynder
05. oktober 2003 - 13:21 #13
You are a hero!!
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