Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

SQL: Laatste 5 entries van een tabel

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0Henk 'm!

  • iarsantoe
  • Registratie: mei 2007
  • Laatst online: 18-03-2010
Beste Tweakers,

Ik zit met een probleem en weet niet precies hoe deze simpel op te lossen, vandaar deze topic.
Ik wil d.m.v. een sql querie de laatste 5 ingevoerde rijen van een table ophalen. Let op, deze tabel heeft geen primary key, dus sorteren en daarvan de 5 laaste tupels eruithalen zou niet correct zijn.
Deze tabel heeft GEEN attribut waardoor ik entry tijd zou kunnen bepalen.

Iemand een idee?

p.s. Ik wil graag mijn database houden zoals hij is, dus geen nieuwe tabellen ofzo invoegen.

Alvast bedankt.

Greetings,
Irfaan

Acties:
  • 0Henk 'm!

  • d00d
  • Registratie: september 2003
  • Laatst online: 17-12-2019

d00d

geen matches

Ik weet niet welke database je gebruikt, maar in het geval van SQL Server is dit niet mogelijk...

42.7 percent of all statistics are made up on the spot.


Acties:
  • 0Henk 'm!

  • eek
  • Registratie: februari 2001
  • Laatst online: 24-02-2017

eek

@MagickNET

Waarom heb je geen primary key in je tabel?
Heb je geen ander veld waar je op kan sorteren?
Als je niets wilt aanpassen in je tabel (bijv. nieuw "INSERT_DATE" veld) dan gaat dat sowieso niet lukken.

Skill is when luck becomes a habit.


Acties:
  • 0Henk 'm!

  • iarsantoe
  • Registratie: mei 2007
  • Laatst online: 18-03-2010
Postgresql.

Dat is de database server die ik gebruik.

Acties:
  • 0Henk 'm!

  • iarsantoe
  • Registratie: mei 2007
  • Laatst online: 18-03-2010
Hmmm,

Dan maar zo:

Ik kan natuurlijk een extra tabel maken met een primary key en daarin de "nieuwste" ingevoerde tupel van mijn tabel koppelen.
Daarna deze sorteren en uitlezen.

Iemand een idee hoe ik de 5 laaste entries van een gesorteerde tabel eruit haalt?

Txns,
Irfaan

Acties:
  • 0Henk 'm!

  • eek
  • Registratie: februari 2001
  • Laatst online: 24-02-2017

eek

@MagickNET

Omgekeerd sorteren en dan de eerst 5 pakken.

Waarom wil je het trouwens zo vreemd oplossen?

eek wijzigde deze reactie 03-07-2007 14:00 (36%)

Skill is when luck becomes a habit.


Acties:
  • 0Henk 'm!

  • d00d
  • Registratie: september 2003
  • Laatst online: 17-12-2019

d00d

geen matches

quote:
iarsantoe schreef op dinsdag 03 juli 2007 @ 13:55:
Postgresql.

Dat is de database server die ik gebruik.
Ja, dat verandert de zaak, volgens mij heeft iedere tabel heeft een OID (object identifier) waar je deze informatie uit kunt halen.

42.7 percent of all statistics are made up on the spot.


Acties:
  • 0Henk 'm!

  • TeeDee
  • Registratie: februari 2001
  • Laatst online: 19:59

TeeDee

CQB 241

quote:
p.s. Ik wil graag mijn database houden zoals hij is, dus geen nieuwe tabellen ofzo invoegen.
Als je dan toch gaat klussen, pas dan je datamodel aan zodat het wel fatsoenlijk is. Nu weet ik verder niet hoe het model eruitziet...
quote:
d00d schreef op dinsdag 03 juli 2007 @ 14:00:
[...]
Ja, dat verandert de zaak, volgens mij heeft iedere tabel heeft een OID (object identifier) waar je deze informatie uit kunt halen.
Kan ook :)

TeeDee wijzigde deze reactie 03-07-2007 14:02 (40%)

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0Henk 'm!

  • iarsantoe
  • Registratie: mei 2007
  • Laatst online: 18-03-2010
[/quote]
Omgekeerd sorteren en dan de eerst 5 pakken.
[quote]

De eerste 5 pakken? Een voorbeeld hoe je dat zou kunnen doen?

txns

iarsantoe wijzigde deze reactie 03-07-2007 14:08 (24%)


Acties:
  • 0Henk 'm!

  • j.ostie
  • Registratie: juni 2007
  • Laatst online: 14-09-2010

j.ostie

hell = browsers

definieer de "Laatste" als jou database geen primary key heeft ( hoogst onwaarschijnlijk ).

Hoe selecteer jij unieke records?

Hosting, webdesign en network security bij dynamicsolutions


Acties:
  • 0Henk 'm!

  • eek
  • Registratie: februari 2001
  • Laatst online: 24-02-2017

eek

@MagickNET

Skill is when luck becomes a habit.


Acties:
  • 0Henk 'm!

  • iarsantoe
  • Registratie: mei 2007
  • Laatst online: 18-03-2010
Kijk, that´s more like it.

Ik weet dat ik niet zomaar gekozen had voor Postgresql boven Mysql so you can see:
Postgresql IS the most advanced OpenSource DBMS!

Bedankt allemaal.

Acties:
  • 0Henk 'm!

  • killercow
  • Registratie: maart 2000
  • Laatst online: 16:19
quote:
iarsantoe schreef op dinsdag 03 juli 2007 @ 14:13:
Kijk, that´s more like it.

Ik weet dat ik niet zomaar gekozen had voor Postgresql boven Mysql so you can see:
Postgresql IS the most advanced OpenSource DBMS!

Bedankt allemaal.
Sorry hoor,

Je bent ook eerst formule 1 gaan rijden? of heb je gewoon een VW golfje?
Volgens mij maakt het geen fuck uit welke DB jij gebruikt, met je huidige kennis niveau misbruik je ze imho toch allemaal.

Zoek eerst een tutorial sql op, en een tutorial database normalisatie, dan kun je de gereedschappen die je zo graag gebruiken wilt ook echt hanteren.

Ook zin in een outdoor geek-fest? eth-0.nl


Acties:
  • 0Henk 'm!

  • eek
  • Registratie: februari 2001
  • Laatst online: 24-02-2017

eek

@MagickNET

Skill is when luck becomes a habit.


  • Hydra
  • Registratie: september 2000
  • Laatst online: 20-02 22:25
quote:
iarsantoe schreef op dinsdag 03 juli 2007 @ 14:13:
Kijk, that´s more like it.

Ik weet dat ik niet zomaar gekozen had voor Postgresql boven Mysql so you can see:
Postgresql IS the most advanced OpenSource DBMS!

Bedankt allemaal.
Alsof andere systemen geen 'LIMIT' functionaliteit hebben 8)7

https://niels.nu


  • sig69
  • Registratie: mei 2002
  • Laatst online: 21:51
quote:
j.ostie schreef op dinsdag 03 juli 2007 @ 14:09:
definieer de "Laatste" als jou database geen primary key heeft ( hoogst onwaarschijnlijk ).

Hoe selecteer jij unieke records?
Sorteren op PK hoeft ook niet goed te gaan, je PK kan net zo goed een string of Guid of whatever zijn. Voor zoiets zou ik een timestamp gebruiken, of op z'n minst gewoon een int.

  • HAL-9000
  • Registratie: januari 2002
  • Laatst online: 10-05-2011

HAL-9000

VMS newbie

quote:
Hydra schreef op woensdag 04 juli 2007 @ 11:30:
[...]


Alsof andere systemen geen 'LIMIT' functionaliteit hebben 8)7
Idd, lol :) Keek ook even raar toen ik het las...

Maar denk ik nou te simpel als ik denk:

"SELECT * FROM TABLE OFFSET(<COUNT> - 5)" (<COUNT> even opvragen met subquery oid)

http://hal.demon.nl | Zoekt Qbus SCSI kaart voor VAX 4200


  • Varienaja
  • Registratie: februari 2001
  • Laatst online: 20:10

Varienaja

Wie dit leest is gek.

quote:
HAL-9000 schreef op woensdag 04 juli 2007 @ 13:43:
Maar denk ik nou te simpel als ik denk:

"SELECT * FROM TABLE OFFSET(<COUNT> - 5)" (<COUNT> even opvragen met subquery oid)
Selecties geven je een verzameling. Een kenmerk daarvan is dat de volgorde niet gedefinieerd is. Alleen als je een order by gebruikt kan je er vanuit gaan dat je resultaat geordend is.

Als ik een tabel met primary key genoeg bewerk door te inserten, deleten en opnieuw te inserten, en ik doe een select * from tabel, dan heb ik al vaak genoeg gezien dat de volgorde van de primary key niet meer wordt aangehouden.

De laatste 5 records in een tabel, zonder een kolom waarop je kunt sorteren is dus praktisch gezien onmogelijk. (Tenzij je terugvalt op de OID, de rownum, of wat dan ook)

Gras groeit niet door eraan te trekken.


  • ACM
  • Registratie: januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

quote:
d00d schreef op dinsdag 03 juli 2007 @ 14:00:
Ja, dat verandert de zaak, volgens mij heeft iedere tabel heeft een OID (object identifier) waar je deze informatie uit kunt halen.
Van die pagina:
quote:
OIDs are not added to user-created tables, unless WITH OIDS is specified when the table is created, or the default_with_oids configuration variable is enabled.
Het standaard toevoegen van OIDs is een tijdje geleden uitgezet (met 8.0 of 8.1) en de kans is dus vrij groot dat die niet bruikbaar zijn.
quote:
Hydra schreef op woensdag 04 juli 2007 @ 11:30:
Alsof andere systemen geen 'LIMIT' functionaliteit hebben 8)7
Nou... MySQL heeft het inderdaad ook, maar de anderen zijn wat lastiger hierbij hoor...
quote:
HAL-9000 schreef op woensdag 04 juli 2007 @ 13:43:
Maar denk ik nou te simpel als ik denk:

"SELECT * FROM TABLE OFFSET(<COUNT> - 5)" (<COUNT> even opvragen met subquery oid)
Sja, eigenlijk wel. Want zoals gezegd is de volgorde op geen enkele manier gegarandeerd. MySQL sorteert het bijvoorbeeld vaak op de primary key (wat dus ook alfabetisch kan betekenen), postgres op de volgorde waarin ie ze binnenkrijgt (en een geupdate record staat dan meestal later in de lijst), etc. Het mooiste blijft het om op een of ander continu-oplopend veld van je tabel te sorteren. En dat kan dan zowel een sequence/serial/generator/autoincrement zijn als een datumveld.

Saai uitzicht in je tuin? Hang er een foto voor!


  • siepeltjuh
  • Registratie: maart 2003
  • Niet online
quote:
iarsantoe schreef op dinsdag 03 juli 2007 @ 13:58:
Hmmm,

Dan maar zo:

Ik kan natuurlijk een extra tabel maken met een primary key en daarin de "nieuwste" ingevoerde tupel van mijn tabel koppelen.
Daarna deze sorteren en uitlezen.

Iemand een idee hoe ik de 5 laaste entries van een gesorteerde tabel eruit haalt?

Txns,
Irfaan
Maar sl je toch een relatie legt tussen 2 tabellen.? hoe wil je dan in godsnaam die relatie in stand houden als je geen uniek veld hebt of geen PK of uberhaupt iets dat te sorteren is op insert moment?

Nee nix geen tabellen aanmaken. Je moet gewoon een veld aanmaken met darin de insert timestamp of een fatsoenlijke PK.

Can`t live without the mods


  • rrrandy
  • Registratie: juli 2005
  • Laatst online: 04-10-2019
Database tabellen zijn per definitie ongesorteerd, vergelijk ze met sets in bijv. Java. Wat jij wilt kan dus simpelweg niet!

  • tss68nl
  • Registratie: mei 2007
  • Laatst online: 04-02 15:27
God sta ons bij dat die gast niet bij de belastingdienst werkt om een productje te maken ofzo :S

KNX Huisautomatisering - DMX Lichtsturing


Acties:
  • 0Henk 'm!

  • Mastermind
  • Registratie: februari 2000
  • Laatst online: 23:26
Mijn hemel wat een crap inderdaad.
quote:
[b]iarsantoe schreef op dinsdag 03 juli 2007 @ 13:49[/b]:
p.s. Ik wil graag mijn database houden zoals hij is, dus geen nieuwe tabellen ofzo invoegen.
Voor welk bedrijf werk je kan ik alvast daar geen klant van worden :')

Mastermind wijzigde deze reactie 06-07-2007 02:30 (80%)


Acties:
  • 0Henk 'm!

  • aex351
  • Registratie: juni 2005
  • Laatst online: 00:49

aex351

I am the one

quote:
iarsantoe schreef op dinsdag 03 juli 2007 @ 13:49:
p.s. Ik wil graag mijn database houden zoals hij is, dus geen nieuwe tabellen ofzo invoegen.
Je geeft hiermee aan dat er dus ook geen data meer aan de db zal worden toegevoegd, gewijzigd of verwijderd.
quote:
iarsantoe schreef op dinsdag 03 juli 2007 @ 14:13:
Ik weet dat ik niet zomaar gekozen had voor Postgresql boven Mysql so you can see:
Postgresql IS the most advanced OpenSource DBMS!
Is dit grappig bedoeld ofzo? Want je laat duidelijk blijken dat je 0,0 verstand van SQL hebt, laat staan van een rdbms opzich.
quote:
tss68nl schreef op donderdag 05 juli 2007 @ 21:39:
God sta ons bij dat die gast niet bij de belastingdienst werkt om een productje te maken ofzo :S
-O-

:N -> Kortom je zal een tabel moeten wijzigen -> :Y
Gewoon een extra veld toevoegen van type integer met eigenschap PK en automatisch oplopend. En probleem is opgelost.

aex351 wijzigde deze reactie 06-07-2007 05:11 (57%)

< dit stukje webruimte is te huur >


Acties:
  • 0Henk 'm!

  • g4wx3
  • Registratie: april 2007
  • Laatst online: 22-02 13:25
Ik weet niet hoe het zit met andere databases, maar ik denk dat MySQL veel beter is voor een beginner op DB-gebied (zoals ik).
Waarom?
Omdat je via PHPadmin allerlei opdrachten op je tabel kunt loslaten door simpel te klikken, deze opdrachten kun je zien, en kun je dan ook rechtsreeks in je php-bestand gebruiken.
Eigenlijk heb ik sinds dag 1 zo gewerkt, gewoon in MySQL kijken wat ik moet doen om bepaalde rijen te selecteren, en dan de opdracht doorlezen, en deze dan gebruiken als ondersteuning voor mijn php script.

http://www.softfocus.be/


Acties:
  • 0Henk 'm!

  • gorgi_19
  • Registratie: mei 2002
  • Laatst online: 24-02 11:41

gorgi_19

Kruimeltjes zijn weer op :9

quote:
g4wx3 schreef op vrijdag 06 juli 2007 @ 08:02:
Ik weet niet hoe het zit met andere databases, maar ik denk dat MySQL veel beter is voor een beginner op DB-gebied (zoals ik).
Waarom?
Omdat je via PHPadmin allerlei opdrachten op je tabel kunt loslaten door simpel te klikken, deze opdrachten kun je zien, en kun je dan ook rechtsreeks in je php-bestand gebruiken.
:?
Dat kan SQL Server (Enterprise Manager) ook. MS Access heeft hier ook een hele mooie interface voor.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0Henk 'm!

  • lier
  • Registratie: januari 2004
  • Laatst online: 17:39
Ik ken Postgresql (praktisch gezien) helemaal niet, maar ondersteund deze ook triggers ?

Een nette oplossing (naar mijn bescheiden mening):

- voeg een veld toe aan de tabel waarin een timestamp van de insert (/update ?) komt.
- laat dit veld automatisch zetten door de trigger.

Dit heeft minimale consequenties voor je datamodel en levert wel de oplossing.

Offtopic: om wat voor applicatie gaat het (dat er een tabel bestaat waarop je een gesorteerde selectie wil doen, zonder dat deze een PK / FK / timestamp veld heeft ?

"If a man is considered guilty for what goes on in his mind. Then give me the electric chair for all my future crimes" - Prince
ShareValue E-miel


Acties:
  • 0Henk 'm!

  • ACM
  • Registratie: januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

quote:
g4wx3 schreef op vrijdag 06 juli 2007 @ 08:02:
Ik weet niet hoe het zit met andere databases, maar ik denk dat MySQL veel beter is voor een beginner op DB-gebied (zoals ik).
Onzin, MySQL is wat dat betreft net als php. Makkelijk te leren, maar wel veel dingen op een niet-standaard of zelfs vieze manier. Bovendien moet je bij mysql rekening houden met zaken waar je bij andere databases niet op hoeft te letten en juist geen rekening met dingen waar je bij andere databases weer wel op moet letten. Maar voor je het vraagt, ik heb dit soort dingen af en toe meegemaakt maar het zijn vaak zulke obscure dingen dat ik ze ondertussen ook alweer vergeten ben :)
Maar o.a. de vieze ondersteuning voor datums zoals het feit dat 31 april een geldige datum is en gebrek aan fatsoenlijke interval-support (wat komt er uit date('5 april 2007') - date('3 april 2006') ?), het altijd opgeven van een default (als je not null zonder default kiest kan je toch het veld weglaten omdat er automatisch een default werd toegevoegd, bovendien is de default datum 0000-00-00 helemaal geen bestaande datum) en allerlei andere vage zaken met betrekking tot tabeldefinities.
Daarnaast is innodb's feedback over tabeldefinitiefouten ronduit dramatisch. Probeer maar eens een foreign key te verwijzen naar een niet-identiek datatype van een andere tabel (dus bijv smallint naar integer, waar op zich geen technisch bezwaar tegen is). Dan krijg je een of andere vage foutmelding waarvan je zelf moet uitvogelen wat ie mogelijk zou kunnen betekenen. Terwijl zoiets met name voor beginners niet erg duidelijk is.

Daarnaast heeft MySQL ondanks zijn hoge versienummer nog altijd de nodige bugs en/of worden er obscure nieuwe bugs geintroduceerd. Een paar weken terug had ik een query waar resultaat uit had moeten komen, in diverse herschreven vormen werkte ie wel, maar de meest efficiente niet... Dat was in MySQL 5.0.41, toen ik de query op dezelfde data in 5.0.38 testte werkte ie wel...
Overigens zijn het soort queries waar ik daarmee tegenaanloop niet bepaald beginnerqueries, dus wat dat betreft is het een minder relevant nadeel ;)
quote:
Omdat je via PHPadmin allerlei opdrachten op je tabel kunt loslaten door simpel te klikken, deze opdrachten kun je zien, en kun je dan ook rechtsreeks in je php-bestand gebruiken.
Voor postgresql is er o.a. phppgadmin of de windowstool pgadmin
quote:
Eigenlijk heb ik sinds dag 1 zo gewerkt, gewoon in MySQL kijken wat ik moet doen om bepaalde rijen te selecteren, en dan de opdracht doorlezen, en deze dan gebruiken als ondersteuning voor mijn php script.
Je queries los invoeren en testen is inderdaad een handige methode om zo fouten te voorkomen, zeker als het een wat lastiger geval is. Maar hoewel phpmyadmin daar zeker een nuttig hulpmiddel bij is in geval van mysql, is het niet de enige die je daarbij kan helpen en kennen de andere rdbms-omgevingen ook dergelijke tools :)
quote:
lier schreef op vrijdag 06 juli 2007 @ 08:17:
Ik ken Postgresql (praktisch gezien) helemaal niet, maar ondersteund deze ook triggers ?
Al jaren, volgens mij is MySQL de enige veelgebruikte database die dat soort features pas sinds kort heeft of pas in de aankomende major release gaat krijgen ;)
quote:
- voeg een veld toe aan de tabel waarin een timestamp van de insert (/update ?) komt.
- laat dit veld automatisch zetten door de trigger.
Hier heb je geen triggers voor nodig. Je kan zoiets overigens ook gewoon met een serial (postgresql), generator (diverse andere omgevingen) of auto_increment (mysql, mssql) oplossen. Of een timestamp-veld dat default naar de huidige tijd.
't Voordeel van de trigger is dan meer dat je die waarde kan forceren, ongeacht wat er bij de insert of update ingevoerd wordt.

ACM wijzigde deze reactie 06-07-2007 08:36 (12%)

Saai uitzicht in je tuin? Hang er een foto voor!

Pagina: 1


Apple iPhone 11 Microsoft Xbox Series X LG OLED C9 Google Pixel 4 CES 2020 Samsung Galaxy S20 4G Sony PlayStation 5 Nintendo Switch Lite

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True