Toon posts:

[SQL] query geeft verkeerde uitkomst

Pagina: 1
Acties:

Verwijderd

Topicstarter
code:
1
2
SELECT name FROM members 
where id in ('select count(id) from members ')


dit simpel sql querietje heb ik om de naam van de hoogste id (integer) te krijgen..
de subquery werkt wel gewoon, alleen hij geeft nu als uitkomst van het 1e record..

iets gaat verkeerd.. watte?

kan het eventueel ook anders opgelost worden, aangezien
code:
1
select name, count(id)
niet kan ??

Verwijderd

kun je niet ORDER BY id DESC LIMIT 1 doen?

Verwijderd

where id = (select max(id) from members))

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 11:53

gorgi_19

Kruimeltjes zijn weer op :9

Een Select Max(ID) from members moet toch ook lukken? :?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

gorgi_19 schreef op 14 mei 2004 @ 18:02:
Een Select Max(ID) from members moet toch ook lukken? :?
Als je de naam nog moet hebben gaat dit niet hé. OK, de TS vraagt er niet naar, maar plaatst naam toch in zijn voorbeeldquery

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 11:53

gorgi_19

Kruimeltjes zijn weer op :9

Ik doelde eerder op het limit gedeelte en als vervanger voor de subquery.. ;)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

gorgi_19 schreef op 14 mei 2004 @ 18:02:
Een Select Max(ID) from members moet toch ook lukken? :?
Let met dit soort constructies wel even op dat je applicatie niet multi-user is. Het is mogelijk als 2 users tegelijkertijd een record aan het toevoegen zijn, dat ze beide hetzelfde ID krijgen.

Haal het max(id) dan ook zo laat mogelijk op, of lock de tabel oid..

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
@TS: De query die je nu hebt (met count) gaat fout op het moment dat je records verwijdert. De query met max erin gaat wel goed in zo'n situatie.

Misschien is het bij jouw niet het geval, maar als je hiervoor een insert hebt gedaan en je gebruikt deze query om het id ervan weten, dan kan het nog steeds fout gaan: als die code ongeveer tegelijkertijd wordt aangeroepen bijv. Daar zijn uiteraard oplossingen voor.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Topicstarter
Verwijderd schreef op 14 mei 2004 @ 18:00:
kun je niet ORDER BY id DESC LIMIT 1 doen?
thanx man.. deze werkt!!!!

ik was er zelf niet opgekomen.. best slim ;)

Verwijderd

Topicstarter
Infinitive schreef op 14 mei 2004 @ 18:06:
@TS: De query die je nu hebt (met count) gaat fout op het moment dat je records verwijdert. De query met max erin gaat wel goed in zo'n situatie.

Misschien is het bij jouw niet het geval, maar als je hiervoor een insert hebt gedaan en je gebruikt deze query om het id ervan weten, dan kan het nog steeds fout gaan: als die code ongeveer tegelijkertijd wordt aangeroepen bijv. Daar zijn uiteraard oplossingen voor.
jaja dat snap ik.. maar dat is in dit geval nvt..

in ieder geval bedankt mensen!
Pagina: 1