Toon posts:

[SQL] delete statement

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik moet dus uit een tabel genaamd nieuws een record verwijderen.. en
wel verstaan het oudste. (dus degene met het laagste id)

nu ben ik tot zover gekomen... werkt ook prima. wanneer ik een waarde invul
maar het is dus de bedoeling dat ie automatisch de laagste id waarde pakt...

wie kan me helpen met dit statement?

DELETE FROM nieuws WHERE ID = ' '

  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
Gewoon met min(waarde) en max(waarde). Wel heel basic iig.. had je makkelijk zelf kunnen vinden

Verwijderd

Verwijderd schreef op 17 september 2002 @ 17:26:
ik moet dus uit een tabel genaamd nieuws een record verwijderen.. en
wel verstaan het oudste. (dus degene met het laagste id)

nu ben ik tot zover gekomen... werkt ook prima. wanneer ik een waarde invul
maar het is dus de bedoeling dat ie automatisch de laagste id waarde pakt...

wie kan me helpen met dit statement?

DELETE FROM nieuws WHERE ID = ' '
code:
1
2
3
4
DELETE FROM nieuws WHERE ID = 
(SELECT ID, min(ID)
FROM nieuws
GROUP BY ID);


Zoiets?

Verwijderd

Overigens mag je er niet vanuit gaan dat je laagste ID ook altijd je oudste record is. Je kunt beten een datum/tijd kolom opnemen, waarin je de tijd/datum invult van wanneer een nieuwsitem is aangemaakt.

Succes :)

Verwijderd

Topicstarter
Thnx mensen en idd MrX thnx voor de tip

Verwijderd

Verwijderd schreef op 17 september 2002 @ 17:35:
Overigens mag je er niet vanuit gaan dat je laagste ID ook altijd je oudste record is. Je kunt beten een datum/tijd kolom opnemen, waarin je de tijd/datum invult van wanneer een nieuwsitem is aangemaakt.

Succes :)
En let op: Laat deze timestamp dan invullen door de DB server en niet door de client, van dan kan ook nasty tijdsverschillen krijgen als je met meerdere gebruikers op een BackEnd aan het werken bent. Dit ivm afwijkende systeemklokken.

Verwijderd

Topicstarter
als ik nu de volgende statement geef.

DELETE FROM nieuws WHERE id = '(select min(id) from nieuws)'

dan krijg ik dus de volgende error in PHPmyAdmin... nu is de database inc phpmyadmin gehost @ een morganahost.nl server.. die mensen weten dus vast wel wat ze doen dus ik neem aan dat PHPmyAdmin wel goed is geinstalleerd op de server..... de volgende error krijg ik..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Warning: Supplied argument is not a valid MySQL result resource
 in /usr/local/cpanel/base/3rdparty/phpMyAdmin/sql.php on line 220

Warning: Cannot add header information - headers already sent by (output
 started at /usr/local/cpanel/base/3rdparty/phpMyAdmin/sql.php:220)
 in /usr/local/cpanel/base/3rdparty/phpMyAdmin/libraries/ob.lib.php on line 53

Warning: Cannot add header information - headers already sent by (output
 started at /usr/local/cpanel/base/3rdparty/phpMyAdmin/sql.php:220)
 in /usr/local/cpanel/base/3rdparty/phpMyAdmin/header.inc.php on line 23

Warning: Cannot add header information - headers already sent by (output 
started at /usr/local/cpanel/base/3rdparty/phpMyAdmin/sql.php:220)
 in /usr/local/cpanel/base/3rdparty/phpMyAdmin/header.inc.php on line 24

Warning: Cannot add header information - headers already sent by (output 
started at /usr/local/cpanel/base/3rdparty/phpMyAdmin/sql.php:220) 
in /usr/local/cpanel/base/3rdparty/phpMyAdmin/header.inc.php on line 25

Warning: Cannot add header information - headers already sent by (output
 started at /usr/local/cpanel/base/3rdparty/phpMyAdmin/sql.php:220) 
in /usr/local/cpanel/base/3rdparty/phpMyAdmin/header.inc.php on line 26


Warning: Cannot add header information - headers already sent by (output
 started at /usr/local/cpanel/base/3rdparty/phpMyAdmin/sql.php:220) 
in /usr/local/cpanel/base/3rdparty/phpMyAdmin/header.inc.php on line 27

Warning: Cannot add header information - headers already sent by (output 
started at /usr/local/cpanel/base/3rdparty/phpMyAdmin/sql.php:220) 
in /usr/local/cpanel/base/3rdparty/phpMyAdmin/header.inc.php on line 29


het statement wordt dus niet via een website uitgevoerd maar rechtstreeks via PHPmyAdmin

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 23:10
als je die quotes weglaat.. ?

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Verwijderd

Topicstarter
zelfde probleem..... met ; erachter helpt ook niet

Verwijderd

1. het ligt aan de definitie van de tabel of het laagste id ook automatisch het oudste is.
2. Sinds wanneer kun je met MySQL een DELETE * FROM tabel WHERE id = (SELECT id FROM anderetabel); doen :?

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 23:10
hmmm misschien = vervangen door IN :
DELETE FROM nieuws WHERE id IN (select min(id) from nieuws)
?

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Verwijderd

Het moet zijn:

DELETE FROM nieuws WHERE id IN (select min(id) from nieuws)

Zonder qoute's dus en ipv '=' het woord IN


<oeps>Tegelijk met voorgaande post</oeps>

Verwijderd

nescafe schreef op 17 september 2002 @ 18:27:
hmmm misschien = vervangen door IN :
DELETE FROM nieuws WHERE id IN (select min(id) from nieuws)
?
Voor een PostgreSQL db gaat dat prima, maar bij mijn weten ondersteunt MySQL geen subqueries :Y)

Verwijderd

Topicstarter
met IN.... werkte het jammer genoeg ook niet....

en darthraider..... er wordt 2 keer verwezen naar dezelfde tabel genaamd nieuws.

Verwijderd

Voor wat betreft MySQL:

Inderdaad, in dat geval moet je eerst het ID bepalen met een query en vervolgens een nieuwe query uit laten voeren die wel zoiets heeft als ID=xxx waarbij xxx een getal voorsteld, het result-ID uit de 1e query

Verwijderd

Verwijderd schreef op 17 september 2002 @ 18:30:
en darthraider..... er wordt 2 keer verwezen naar dezelfde tabel genaamd nieuws.
ja en? Bij mijn weten ziet MySQL dat gewoon als (sub)query, zelfde tabel of niet...

correct me if i'm wrong :?

/me is PostgreSQL gewend

[ Voor 0% gewijzigd door Verwijderd op 17-09-2002 18:34 . Reden: stomme typo's ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Verwijderd schreef op 17 september 2002 @ 18:27:
Het moet zijn:

DELETE FROM nieuws WHERE id IN (select min(id) from nieuws)

Zonder qoute's dus en ipv '=' het woord IN
1) Het ligt eraan, misschien is z'n id als char defined, wat betekend dat je hem wel moet quoten, wat niet zo slim is, maar ik acht de kans wel hoog bij de topicsstarter :)
2) IN is niet nodig in dit geval, MIN geeft altijd maar 1 rij/getal terug dus je gaat niet in een verzameling zoeken.
3) MySQL ondersteunt geen subquery's

Waarom doet dit topic me nou denken aan een discussie in LA :Z

DarthRaider schreef op 17 september 2002 @ 18:32:

ja en? Bij mijn weten ziet MySQL dat gewoon als (sub)query, zelfde tabel of niet...

correct me if i'm wrong :?
Eigenlijk is het een subselect, wat een onderdeel is van een subquery. Dus je hebt 100% gelijk :)

  • Kama
  • Registratie: Mei 2002
  • Laatst online: 14:19

Kama

Aritifical Intelligenticus

declare @lowest int
select @lowest=min(id) from nieuws
delete from nieuws where id=@lowest

Maar als je alleen het laatste nieuws wilt hebben kun je beter gebruiken:

select top 5 from nieuws order by ID desc

Niels


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Kama schreef op 17 september 2002 @ 18:36:
declare @lowest int
select @lowest=min(id) from nieuws
delete from nieuws where id=@lowest

Maar als je alleen het laatste nieuws wilt hebben kun je beter gebruiken:

select top 5 from nieuws order by ID desc
Goh, is dat nieuw in MySQL, stored procedures? :X

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 20:27
Nee, MySql heeft geen stored procedures net als ze geen subqueries hebben (< versie 4 tenminste).

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Sybr_E-N schreef op 17 september 2002 @ 19:36:
Nee, MySql heeft geen stored procedures net als ze geen subqueries hebben (< versie 4 tenminste).
Maak daar maar < 4.1 van.
http://www.mysql.com/products/mysql-4.0/index.html (en dan helemaal onderaan)

Verwijderd

Verwijderd schreef op 17 september 2002 @ 18:28:
[...]


Voor een PostgreSQL db gaat dat prima, maar bij mijn weten ondersteunt MySQL geen subqueries :Y)
Ja dat wist ik ook wel... Mijn query klopte dus, maar het zou enigzins convienient zijn als topicstarters voortaan hun soort DB erbijzetten. Dan weet ik wat ik in m'n queries mag gebruiken...
Pagina: 1