login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Condities in query

Offline Dark_Paul - 23/04/2007 17:34
Avatar van Dark_PaulPHP ver gevorderde He,
Ik heb een tabel, daar staat een veld 'aantal' in. Die moet ik dus updaten, en als die op 0 komt moet ik de rij verwijderen.
Nu doe ik dat met 2 queries: ik kijk eerst welke waarde dat veld heeft (bij bepaalde omstandigheden), dan update/verwijder ik die rij.
Dat kost me dus 2 queries.
Is het ook mogelijk dit in één query te doen? Zoja, is dat ook sneller/efficiënter (minder serverload).

9 antwoorden

Gesponsorde links
Offline ArndJan - 23/04/2007 17:40
Avatar van ArndJan PHP interesse Lijkt mij niet. Je zal eerst een rij moeten selecteren SELECT en daarna een UPDATE of een DELETE.
Offline phpfreak - 23/04/2007 18:04 (laatste wijziging 23/04/2007 18:06)
Avatar van phpfreak PHP beginner Ik zou dit met een if doen, Je moet zowiso de waarde uit de tabel halen eerst, en voor je de tabel update, moet je zien of die nieuwe waarde niet 0 is en dan:
  1. <?
  2. //eerst query voor het aantal uit db te halen
  3. $waarde --;
  4. if ($waarde == 0){
  5. //delete query
  6. }else{
  7. //update query
  8. }
  9. ?>

Of bedoel je iets anders?
Offline Dark_Paul - 24/04/2007 15:30
Avatar van Dark_Paul PHP ver gevorderde Lees de topicstart. Ik haal het nu al op, als het nieuwe getal dan op '0' uitkomt, moet de rij worden verwijderd, anders updaten. Dat doe ik nu al met een if-else structuur.
Ik vroeg me af of dit in één query kon. Zoja, of dit ook efficiënter is.
Offline Thomas - 24/04/2007 15:54
Avatar van Thomas Moderator Hangt er vanaf waar 'aantal' wordt berekend eh.

Als je het in PHP berekent kun je meteen een DELETE-query aanroepen zoals phpfreak aangeeft.
Als je achteraf pas kunt vaststellen dat aantal 0 is geworden zul je (na je UPDATE-query) alsnog een DELETE-query moeten uitvoeren.

Je kunt niet op grond van een conditie van een UPDATE-query een DELETE-query maken.

Offline Dark_Paul - 24/04/2007 16:01
Avatar van Dark_Paul PHP ver gevorderde Via een form krijg ik een hoeveelheid binnen. Vervolgens kijk ik welke waarde het veld 'aantal' onder bepaalde omstandigheden heeft.
Dan kijk ik via PHP of aantal-hoeveelheid =< 0. Zoja, voer ik een DELETE uit. Zonee, dan voer ik een UPDATE uit.
Ik vroeg me af of dit in één keer kon, via MySQL de voorwaarde bekijken en dan deleten/updaten.
Offline Thomas - 24/04/2007 16:02
Avatar van Thomas Moderator Als je 'bepaalde omstandigheden' in PHP bepaalt, gaat dat niet, tenzij je de berekening in MySQL uitvoert, en dit als WHERE-conditie in je DELETE-query zet.
Offline Dark_Paul - 24/04/2007 17:06
Avatar van Dark_Paul PHP ver gevorderde Die 'bepaalde omstandigheden' is gewoon een WHERE-statement in de query.
Offline Rik - 24/04/2007 17:17 (laatste wijziging 24/04/2007 17:19)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Je kan wel twee queries in een keer uitvoeren...

Om een of andere rare reden kan ik m'n code niet posten? 

  1. UPDATE getallen SET getal = getal + 1;
  2. D E L E T E FROM getallen WHERE getal = 1


Aha hij is bang voor SQL injection... Ik kreeg deze error:
Citaat:
Not Acceptable
An appropriate representation of the requested resource /forum/2/21412/PHP_&_SQL/Condities_in_query could not be found on this server.
Offline Dark_Paul - 24/04/2007 17:28
Avatar van Dark_Paul PHP ver gevorderde Argh!
Had net een bericht getypt, maar die 'queries' komen niet door.. -_-
Kan je met een voorwaarde in de query dan bepalen welke querie wordt uitgevoerd?
  1. CASE WHEN aantal-hoeveelheid=<0 THEN D E L E T E FROM tabel WHERE id=1 ELSE U P D A T E tabel SET aantal=aantal-hoeveelheid WHERE id=1 END
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.214s