Toon posts:

mysql vraagje

Pagina: 1
Acties:
  • 176 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
he,
hoe kan ik alleen het laatse record uit een tabel pakken?

SELECT id FROM news

als je dit doet krijg je alle records en ik wil allee van het laatse record

bedankt

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
Als je bedoelt dat je wil weten hoeveel ID's er zijn, kan je toch gewoon

SELECT COUNT(id) AS aantal FROM news;

gebruiken?

Verwijderd

Topicstarter
bedankt

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
Als je alleen de hoogste waarde wil hebben kan je ook het volgende doen:

SELECT MAX(ID) AS grootste FROM news;

Verwijderd

SELECT id FROM news order by id desc limit 1

is ook een manier :)

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 17-08 13:41
Maar eeh, hoe doet MySQL dat dan eigenlijk? Als ie ziet dat je um gesort wilt en alleen de laatste wilt hebben zou ie in principe alleen de grootste kunnen zoeken, of hij zou al je records kunnen sorteren (wat een hoop tijd kost) en daarna de eerste terugsturen..

Lijkt me nogal wat uitmaken als je een table hebt met b.v. 1e6 records..

Verwijderd

Op zondag 07 januari 2001 13:54 schreef bartvb het volgende:
Maar eeh, hoe doet MySQL dat dan eigenlijk? Als ie ziet dat je um gesort wilt en alleen de laatste wilt hebben zou ie in principe alleen de grootste kunnen zoeken, of hij zou al je records kunnen sorteren (wat een hoop tijd kost) en daarna de eerste terugsturen..

Lijkt me nogal wat uitmaken als je een table hebt met b.v. 1e6 records..
Lijkt mij ook.

Ditte:
SELECT * FROM news WHERE id=MAX(ID);
is denk ik de snelste? omdat ie max gebruikt, wat denk ik het snelst is.

Verwijderd

Manier waarop maakt vooral veel uit bij tabellen waar veel records inzitten (> 100000 of zo) en of er nog gejoind wordt etc.

Zorg tenminste dat er gebruik gemaakt wordt van een index (of van de juiste indexen!).

Verwijderd

Topicstarter
hmm nog ee vraagje. hoe krijg ik die $id er nouw uit. ik heb dit:

<?
$server = mysql_connect("db.imperialconflict.f2s.com","jslemmer","*******");
$db = mysql_select_db("jslemmer") or die ("Unable to connect to database");

$sql = "SELECT COUNT(id) AS lastid FROM news";
$sql_result = mysql_query($sql) or die ("Couldn't execute SQL query");
echo "$lastid";
?>

maar hij leest die $id niet in. moet er nog iets bij? moet ik het nog in een aray gooien?

  • Kresh
  • Registratie: Mei 2000
  • Laatst online: 02-03 09:27
PHP:
1
2
3
4
5
6
7
8
9
10
<?
$server = mysql_connect("db.imperialconflict.f2s.com","jslemmer","*******"); 
$db = mysql_select_db("jslemmer") or die ("Unable to connect to database");

$sql = "SELECT * FROM news WHERE id=MAX(ID)";
$sql_result = mysql_query($sql) or die ("Couldn't execute SQL query");
$row = mysql_fetch_array($sql_result);
$lastid = $row["id"];
echo "$lastid";
?>

zoiets?
hth

  • tweakerbee
  • Registratie: Maart 2000
  • Laatst online: 16-08 21:25

tweakerbee

dus..?

while($newarray=mysql_fetch_array($sql_result)) {
echo $newarray["id"];
};

Dacht ik uit m'n hoofd.

[edit]
O ja, while loop is niet nodig bij 1 resultaat. |:( Stom. Ach ben net begonnen met MySQL mag wel. ;)

You can't have everything. Where would you put it?


Verwijderd

Op zondag 07 januari 2001 20:39 schreef jons het volgende:
hmm nog ee vraagje. hoe krijg ik die $id er nouw uit. ik heb dit:

<?
$server = mysql_connect("db.imperialconflict.f2s.com","jslemmer","*******");
$db = mysql_select_db("jslemmer") or die ("Unable to connect to database");

$sql = "SELECT COUNT(id) AS lastid FROM news";
$sql_result = mysql_query($sql) or die ("Couldn't execute SQL query");
echo "$lastid";
?>

maar hij leest die $id niet in. moet er nog iets bij? moet ik het nog in een aray gooien?
ik dacht dat je de hoogste wou hebben???? Dan wordt je code:
PHP:
1
2
3
4
5
6
7
8
9
<?
$server = mysql_connect("db.imperialconflict.f2s.com","jslemmer","*******"); 
$db = mysql_select_db("jslemmer") or die ("Unable to connect to database");

$sql = "SELECT max(id) AS lastid FROM news";
$sql_result = mysql_query($sql) or die ("Couldn't execute SQL query");
$sql_record = mysql_fetch_object($sql_result);
echo "$sql_record->lastid";
?>

Verwijderd

Topicstarter
ik heb die code van jouw gebruikt maar dan doet ie het nog niet:

<?
$server = mysql_connect("db.imperialconflict.f2s.com","jslemmer","****");
$db = mysql_select_db("jslemmer") or die ("Unable to connect to database");

$sql = "SELECT MAX(ID) AS lastid FROM news";
$sql_result = mysql_query($sql) or die ("Couldn't execute SQL query");
$row = mysql_fetch_object($sql_result);
echo "$sql_result";

?>

Verwijderd

Op maandag 08 januari 2001 15:38 schreef jons het volgende:
ik heb die code van jouw gebruikt maar dan doet ie het nog niet:

<?
$server = mysql_connect("db.imperialconflict.f2s.com","jslemmer","****");
$db = mysql_select_db("jslemmer") or die ("Unable to connect to database");

$sql = "SELECT MAX(ID) AS lastid FROM news";
$sql_result = mysql_query($sql) or die ("Couldn't execute SQL query");
$row = mysql_fetch_object($sql_result);
echo "$sql_result";

?>
je moet ook niet $sql_result echoën, maar $row->lastid

Verwijderd

Stel ik wil nu de laatste 8 records selecteren.
En de op één na laatste record is gewist.
Dus als je max(id)-8 tot en met max(id) zou opvragen dan zou je er 7 krijgen.

Hoe krijg ik dit nou goed voor elkaar.

Verwijderd

Op maandag 08 januari 2001 17:13 schreef EAB het volgende:
Stel ik wil nu de laatste 8 records selecteren.
En de op één na laatste record is gewist.
Dus als je max(id)-8 tot en met max(id) zou opvragen dan zou je er 7 krijgen.

Hoe krijg ik dit nou goed voor elkaar.
Dit kan goed gaan.
Je moet dan wel zorgen dat alle id's gevuld zijn, en zoals je opmerkt, blijven.
Slechte methode dus!

Sjako's tip : Gebruik limit (MySQL).

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Scrollable cursors ofzo gebruiken.

https://fgheysels.github.io/


Verwijderd

Topicstarter
dank u allemaal zeer erg. het werkt nu. :o


nu gaan we werken om het nieuws uit de database te trekken

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 17-08 13:41
BTW dit:
SELECT * FROM news WHERE id=MAX(ID);

Is misschien wel het snelste maar kan dus weer niet in MySQL :( Wordt tijd dat ze die subselects eens toe gaan passen (maar ja, dan moet je toch weer wachten tot iedereen over is naar een mysql versie die subselects snapt)..

In Mysql zou je dus 2 selects moeten doen :(

Verwijderd

bartvb: SELECT * FROM news WHERE id=MAX(ID);
code:
1
SELECT * FROM news ORDER BY id DESC LIMIT 1;

In Mysql zou je dus 2 selects moeten doen :(

Of 1 hersen moeten gebruiken. >:)


edit:

Zie trouwens dat deze al gegeven was... Qua snelheid zal het bar weinig uitmaken (als het al uitmaakt).

Verwijderd

Topicstarter
nog een vraagje:

ik heb dit als code om het nieuws te laten zien. check maar op: http://www.imperialconflict.f2s.com/shownews.php3

<?

$server = mysql_connect("db.imperialconflict.f2s.com","jslemmer","********");
mysql_select_db("jslemmer") or die ("Unable to connect to database");

$sql = "SELECT * FROM news ";
$sql_result = mysql_query($sql) or die ("Couldn't execute SQL query");


while ($row = mysql_fetch_array($sql_result)) {
$user = $row["user"];
$title = $row["title"];
$text = $row["text"];
$mday = $row["mday"];
$mon = $row["mon"];
$year = $row["year"];
$hour = $row["hour"];
$min = $row["min"];
$sec = $row["sec"];


echo "<table width='731' height='23' cellspacing=0 cellpadding=0>";
echo "<tr><td width='445' height='23' align='center' bgcolor=#91,91,91>$title</td>";
echo "<td width='225' height='23' align='right' bgcolor=#D4,D4,D4><font size='1'>Posted by $user on $mday-$mon-$year $hour:$min:$sec</font></td></tr>";
echo "<tr><td width='715' height='23' colspan='2' bgcolor=#72,7C,8B>   $text</td></tr></table><br>";

}

?>

het nieuws wordt op volgorde van id getoont.
dus het laatste niuews komt onderaann, nu wil ik dus het laatse nieuws boven aan hebben.

ik had dit geprobeert maar dat werkte niet;

$i = 0;
"SELECT * FROM news WHERE id=MAX(ID-$i)";

while loopje {
laat nieuws zien in tabeletje
$i = $i +1;
}

hoe kan dit wel?

Verwijderd

probeer eens een sql manual

Verwijderd

ja, je kunt beter eerst even je wat beter oriënteren op MySQL. Want als je meerdere postings wilt laten zien, bijvoorbeeld de laatste vijf, dan maak je zoiets:
code:
1
SELECT * FROM nieuws order by id desc limit 5

Ook sla je in iets van 6 verschillende velden tijden/datums op :? Als je nou gewoon 1 veld maakt en je gooit daar een timestamp in, dan kun je als je de timestamp uitleest de tijden daaruit maken. Check dit artikeltje maar.
Pagina: 1