Toon posts:

[Access] Soort SELF JOIN? *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb in Access een tabel met een hiërarchische (menu) structuur.

De ParentID verwijst naar de TabID, op deze manier bouw ik mijn menu structuur op.
De tabel ziet er als volgt uit.
--------------------
TabID
--------------------
TabName
--------------------
ParentID
--------------------
AuthorizedRoles
--------------------


De uitkomst ziet er als volgt uit, het aantal streepjes staat voor het niveau waar de Tabs aanwezig zijn.

Nivo, tabID, ParentID

-, 331, -1 (-1 is het root niveau)
--, 332, 331 (deze node verwijst naar de voorgaande dmv de parentID
---, 333, 332
----, 334, 333

Nu wil ik met behulp van een Access query (soort self join) alle kinderen van een rij bijwerken. Ik wil dus met 1 query de betreffende tab incl. alle kinderen bijwerken.

Ik probeer het momenteel met deze query.

UPDATE Tabs INNER JOIN Tabs AS Tabs_1 ON Tabs_1.TabID = Tabs.ParentID SET Tabs.AuthorizedRoles = 'bla' WHERE (((Tabs.TabID)=331));

Zover was ik al, alleen deze update maar 0 rows :(

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:10
Het is misschien een idee:

Schrijf eerst eens een SELECT query die de rows gaat gaan ophalen die je wilt updaten, en verander die query dan later in een UPDATE.
code:
1
2
3
4
SELECT *
FROM tabs, tabs as tabs_1
WHERE tabs.parent_id = tabs_1.id
AND ...

https://fgheysels.github.io/


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

SQL:
1
2
3
4
UPDATE Tabs SET tabs.AuthorizedRoles = 'bla' 
FROM Tabs, Tabs as Tabs_1
INNER JOIN Tabs_1 ON Tabs.ParentID = Tabs_1.TabID
WHERE Tabs.TabID = 331

Ik heb de query niet getest, maar volgens mij moet het zo wel lukken :)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Verwijderd

Topicstarter
Ik heb het als SELECT geprobeerd, ik krijg er echt niet meer als 1 row uit :(

Grrrrr :(

  • mocean
  • Registratie: November 2000
  • Laatst online: 15-08 04:26
Verwijderd schreef op 24 november 2003 @ 21:07:
Ik heb het als SELECT geprobeerd, ik krijg er echt niet meer als 1 row uit :(

Grrrrr :(
Met de query van DeverauX update je volgens mij alleen de records die direct 331 als parent hebben. Om een hele boom onder 1 record te updaten (waarvan je het aantal niveaus niet weet) zul je toch een soort loop moeten hebben, geen idee of dat kan in SQL (in Access).

Koop of verkoop je webshop: ecquisition.com