Toon posts:

[MySQL] Update query probleem *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb iets wat er ongeveer uitziet als het volgende:

stel je hebt 2 tabellen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
produktcategorien:                 Produkten:                         

| CAT  |  CATID  |           | ProduktID     | CATID   |  Naam    |
-----------------            --------------------------------------
| CPU  |  1      |           |      1000     |    1    | cpu1     |
| MEM  |  2      |           |      1001     |    2    | mem1     |
| HD   |  3      |           |      1002     |    3    | HD1      |
                             |      1003     |    2    | HD2      |
                             |      1004     |    2    | mem2     |
                             |      1005     |    1    | cpu2     | 


uit de tabellen zijn de kollomen CatID aan elkaar gerelateerd.



Stel dat ik nou van produkt met ID 1003 de categorie wil wijzigen maar dan niet aan de hand van de CatID maar aan de hand van de categorie naam, "HD" in dit geval.

Hoe ziet dan zo'n update query eruit? Ik kan dit nergens vinden, maar ik neem aan dat het wel mogelijk is.


EDIT:
Ik heb een aanpassing gedaan om het hopelijk wat duidelijker te maken:
van het produkt met ID 1003 heb ik de CatID op 2 gezet (memory) maar zoals je ziet gaat het om een harddisk. Dat produkt staat dus in de verkeerde categorie.

Normaal zou je zeggen:
UPDATE Produkten SET CatID = 3 WHERE produktID = 1003

Maar ik zou op de een of andere manier willen:
UPDATE Produkten SET Categorie = HD WHERE produktID = 1003

maar hoe relateer ik die Categorie dan aan de CatID vanuit de update query?

[ Voor 69% gewijzigd door Verwijderd op 06-08-2003 13:53 ]


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

where naam=HD%
denk ik

Doet iets met Cloud (MS/IBM)


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
where produktID=1003
lijkt mij meer toepasselijk, ik denk niet dat hij alle hdd´s wil veranderen.

HD%???? Iets te groot misschien???

[ Voor 12% gewijzigd door Gomez12 op 06-08-2003 13:42 ]


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Gomez12 schreef op 06 August 2003 @ 13:41:
where produktID=1003
lijkt mij meer toepasselijk, ik denk niet dat hij alle hdd´s wil veranderen.

HD%????
Stel dat ik nou van produkt met ID 1003 de categorie wil wijzigen maar dan niet aan de hand van de CatID maar aan de hand van de categorie naam, "HD" in dit geval.
of HD2

is me niet helemaal duidelijk
in zijn table staan HD1 en HD2 (das dus samen HD%)

Doet iets met Cloud (MS/IBM)


  • Brothar
  • Registratie: Oktober 2000
  • Laatst online: 04-02 09:14

Brothar

meester

Dat kan dus niet i.v.m. referential integrity.

Wat je in wezen moet doen om dit te verwezenlijken, is de tabel produktcategorieën aanpassen.
Als je daar met een updatecommando cat wijzigt "where catid=3" dan bereik je dat voor produkt 1003 de categorie is aangepast.
Maar dat is meteen gebeurd voor alle artikelen die catid=3 hebben.

Wil je voor slechts 1 artikel de cat wijzigen, dan zul je een nieuwe categorie in je tabel produktcategorieën moeten opnemen.

eagle


Verwijderd

Topicstarter
Ik heb een aanpassing gedaan om het hopelijk wat duidelijker te maken:
van het produkt met ID 1003 heb ik de CatID op 2 gezet (memory) maar zoals je ziet gaat het om een harddisk. Deze staat dus in de verkeerde categorie.

Normaal zou je zeggen:
UPDATE Produkten SET CatID = 3 WHERE produktID = 1003

Maar ik zou op de een of andere manier willen:
UPDATE Produkten SET Categorie = HD WHERE produktID = 1003

maar hoe relateer id die Categorie dan aan de CatID vanuit de update query?

  • jAnO!
  • Registratie: Januari 2002
  • Laatst online: 13-08 20:56

jAnO!

lalalavanillevla

update producten set CatID = 3 where Naam = 'HD%' and CatID != 3;

When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

UPDATE Produkten SET Categorie = (SELECT catid from produktcategorien
where cat='HD') WHERE produktID = 1003

Who is John Galt?


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
UPDATE bla
SET bla = melp
WHERE veld LIKE 'HD%'

Basic dus, en terug te vinden in gelijk welke SQL tutorial.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Ok, iets te snel gelezen.

Je zult met een Subquery moeten werken of met een UPDATE FROM

code:
1
2
3
4
5
UPDATE producten
SET categorie = CATID
FROM prodcategorieën
WHERE prodcategoriën.CAT = 'MEM'
AND producten.blaat = iets


Zoiets denk ik...

https://fgheysels.github.io/


Verwijderd

Wil je niet zo iets:

UPDATE produkten SET Catid = (SELECT CatID FROM ProduktCategorien WHERE CAT = 'HD') WHERE ProduktID = 1003

edit:

beetje te laat ... :)

[ Voor 18% gewijzigd door Verwijderd op 06-08-2003 13:57 ]


  • Brothar
  • Registratie: Oktober 2000
  • Laatst online: 04-02 09:14

Brothar

meester

Oké
Alleen zou ik "where cat='HD' " vervangen door:
"where'cat='MEM' ", omdat het catid in produkten voor produkt 1003 gelijk aan 2 is (na de edit voor de duidelijkheid)

[ Voor 226% gewijzigd door Brothar op 06-08-2003 14:02 ]

eagle


Verwijderd

Het kan op zich geen kwaad om even te vertellen in welke omgeving je werkt. MySQL werkt net iets anders dan, laten we zeggen, Oracle of VB :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Als je een DBMS gebruikt die subqueries ondersteund (alle DBMS'en behalve MySQL ondersteunen dat), kan je ook gebruik maken van justmental's oplossing.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Sorry, het gaat om MySQL en laat ik nou net lezen dat deze niet met sub select query's om kan gaan.

dus, hoe wordt het dan?

[ Voor 10% gewijzigd door Verwijderd op 06-08-2003 14:08 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
[rml]whoami in "[ MySQL] Update query probleem *"[/rml]

Zoiets, maar de precieze syntax zal je ff moeten nakijken in je manual.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 06 August 2003 @ 14:10:
[rml]whoami in "[ MySQL] Update query probleem *"[/rml]

Zoiets, maar de precieze syntax zal je ff moeten nakijken in je manual.
ik ga even zoeken, ik laat het nog wel weten wat het precies was. bedankt.
Pagina: 1