[MySql & PHP] 2 Update Queries in 1? Hoe?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey issie weer,

Ik wil de volgende 2 queries uitvoeren.

code:
1
2
3
4
UPDATE 
CategorieTbl 
SET CategorieOrde = '$CategorieEntry' 
WHERE CategorieOrde = $CategorieOrde


code:
1
2
3
4
UPDATE 
CategorieTbl 
SET CategorieOrde = '$CategorieOrde' 
WHERE CategorieOrde = $CategorieEntry


Ik wil deze eigenlijk in 1x uitvoeren...kunnen jullie me uitleggen hoe dat moet?
Het lijkt me simpel maar kon er ook zo snel niet iets over vinden in de search
(me = n00b :) )

edit: Eigenlijk worden er bij deze queries dus in 2 records de waarde CategorieOrde omgewisseld...miss dat er dan een andere mogelijkheid is volgens jullie?

[ Voor 17% gewijzigd door Verwijderd op 22-06-2004 20:33 . Reden: bedacht me het laatste ineens ]


Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Je kan multiple queries aanzetten in je php.ini, dan kan je die twee queries uitvoeren met gescheiden komma's. Als het is omdat je zeker wilt zijn dat ze beiden aangepast zijn moet je eens kijken naar Transactions (en locking, als je wilt dat niemand iets binnenhaalt terwijl je aan het omwisselen bent)

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

  • Markieman
  • Registratie: December 2001
  • Laatst online: 01-06 11:37
Volgens mij kan het niet in een keer, je zit mijns inziens met de volgende kwestie.

Stel dat je door het combineren van deze query's in 1 record twee keer de waarde CategorieOrde wilt wijzigen omdat hij zowel voldoet aan $CategorieOrde als aan $CategorieEntry.
Stel dat de 2 nieuwe waarden ook nog eens 2 verschillende hebben, welke moet die dan als laatste hebben? Hoe weet de database dat?

Daarom moet je meerdere query's gebruiken, om deze volgorde aan te geven...

[ Voor 3% gewijzigd door Markieman op 22-06-2004 21:09 ]

You do not fear them? - The Wraith? Naah. Now *clowns*, that's another story.


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Markieman schreef op 22 juni 2004 @ 21:07:
Volgens mij kan het niet in een keer, je zit mijns inziens met de volgende kwestie.

Stel dat je door het combineren van deze query's in 1 record twee keer de waarde CategorieOrde wilt wijzigen omdat hij zowel voldoet aan $CategorieOrde als aan $CategorieEntry.
Stel dat de 2 nieuwe waarden ook nog eens 2 verschillende hebben, welke moet die dan als laatste hebben? Hoe weet de database dat?

Daarom moet je meerdere query's gebruiken, om deze volgorde aan te geven...
Met een hele lelijke if of case en sorteren op de juiste manier kan het wel. Aan te raden is het echter niet. Het lijkt me verstandiger om gewoon een transaction te maken. Daar zijn die dingen voor bedoeld.

Als je het toch wilt:
zoek alle records met id a of b
als waarde=a -> waarde=b
als waarde=b -> waarde=a

Er vanuit gaande dat de waardes al bekend zijn uiteraard.

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
SQL:
1
2
3
4
5
UPDATE tabel
SET 
veld = CASE veld WHEN waardeA THEN waardeB WHEN waardeB THEN waardeA ELSE veld
WHERE
veld IN (waardeA, waardeB)


Probeer zoiets, ik snap je voorbeeld code niet helemaal maar je moet er wel een eindje mee komen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ACM schreef op 22 juni 2004 @ 21:20:
...

Probeer zoiets, ik snap je voorbeeld code niet helemaal maar je moet er wel een eindje mee komen.
er is sprake van het volgende:
tabel:

code:
1
2
3
4
5
6
ID  Naam     Orde

01  Test1   1
02  Test2   4
03  Test3   7
04  Test4   10


Dat moet dmv een query bijvoorbeeld het volgende worden:
code:
1
2
3
4
5
6
ID  Naam    Orde

01  Test1   1
02  Test2   7
03  Test3   4
04  Test4   10

Je ziet dat de waarde 4 en 7 in de kolom orde zijn omgewisseld. Nu heb ik deze waardes en de de ID's van beide records al.

Mijn idee was dan om het record met de waarde Orde=4 te updaten naar de waarde 7 en de het record met de waarde Orde=7 te updaten naar 4...

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
code:
1
2
3
4
UPDATE tabel
SET
  Orde = CASE ID WHEN 02 THEN 7 WHEN 03 THEN 4 ELSE Orde END
WHERE ID IN (02, 03)


Dat kan toch, zelfde model als mijn aangegeven query...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ACM schreef op 22 juni 2004 @ 22:04:
...

Dat kan toch, zelfde model als mijn aangegeven query...
OK dankje! sorry ik begreep het nog niet helemaal! Ik ga der mee aan de slag!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thx! Het werkt....
Pagina: 1