Access XP: UPDATE mit INNER JOIN möglich?
small-step
- datenbank
Hallo alle,
ich habe ein kleines Problem. Ich möchte in einer Tabelle eine Spalte updaten. Allerdings nur, wenn dieser Eintrag zu einem bestimmten Eintrag in einer anderen Tabelle gehört. Klingt jetzt ein wenig seltsam, ich weiß nicht genau, wie ich die Beziehungen sonst darstellen soll, aber ein Beispiel:
Aktualisiert werden soll die Rechnungsnummer in der Tabelle Arbeitszeit bei den Einträgen, die über die Tabelle Projektliste mit einem Eintrag der Tabelle Projekte verknüpft sind. Ich habe es mit etwas in dieser Art versucht
UPDATE tbArbeitszeit
(INNER JOIN tbProjektliste
ON tbProjekte.PKProjekt = tbProjektliste.FKProjekt)
INNER JOIN tbArbeitszeit
ON tbProjektliste.PKProjektliste = tbArbeitszeit.FKProjektliste
SET tbArbeitszeit.Rechnung = '4-1093534116'
WHERE tbProjekte.PKProjekt = 4
Allerdings scheine ich einen Syntaxfehler eingearbeitet zu haben.
Kann, mag mir jemand helfen? :-)
Danke schonmal!
small-step
Hi small-step,
also ich muss zugeben, Access kenne ich nicht, aber SQL-Server. Aber aus deinem Statement werde ich nicht so recht schlau. Du machst Bedingungen auf tbProjekte, machst aber keinen JOIN darauf, und machst sogar ne Bedingung auf die Tabelle zweimal?
Generell sieht's bei SQL-Server so aus:
UPDATE <tabelle>
SET <Feld>=<Wert>
INNER JOIN <zweite Tabelle>
ON <Bedingung>
WHERE <Bedingung>
Ist nur skizzenhaft natürlich, das komplette findest du in der Hilfe.
Gruß,
Martin
Hallo small-step,
Aktualisiert werden soll die Rechnungsnummer in der Tabelle Arbeitszeit bei den Einträgen, die über die Tabelle Projektliste mit einem Eintrag der Tabelle Projekte verknüpft sind. Ich habe es mit etwas in dieser Art versucht
Verstehe ich das richtig:
Du hast drei Tabellen
tbArbeitszeit
FKProjektliste
Rechnung
[...]
tbProjekte
PKProjekt
[...]
tbProjektliste
FKProjekt
PKProjektliste
[...]
und folgenden Beziehungen:
tbProjekte 1:n tbProjektliste (d.h. zu einem Projekt können mehrere Projektlisten gehören)
tbProjektliste 1:n tbArbeitszeit (d.h. zu jeder Projektliste können mehrere Arbeitszeiten)
UPDATE tbArbeitszeit
(INNER JOIN tbProjektliste
ON tbProjekte.PKProjekt = tbProjektliste.FKProjekt)
INNER JOIN tbArbeitszeit
ON tbProjektliste.PKProjektliste = tbArbeitszeit.FKProjektliste
SET tbArbeitszeit.Rechnung = '4-1093534116'
WHERE tbProjekte.PKProjekt = 4Allerdings scheine ich einen Syntaxfehler eingearbeitet zu haben.
Dann machst Du Dir die Arbeit viel zu kompliziert:
UPDATE tbArbeitszeit a
INNER JOIN tbProjektliste pl ON a.FKProjektliste = pl.PKProjektliste
SET a.Rechnung = '4-1093534116'
WHERE pl.FKProjekt = 4
sollte es tun.
Freundliche Grüsse,
Vinzenz
Hallo Vinzenz,
Dann machst Du Dir die Arbeit viel zu kompliziert:
Ach du Schande, das ist mir überhaupt nicht aufgefallen... wie peinlich. Ich probier es gleich aus. Dankeschön schonmal für die Hilfe!
Gruß,
small-step
Hallo an alle!
Danke für die Hilfe, mit der von Vinzenz hat es funktioniert. Möglicherweise sollte ich mich mit joins mal etwas genauer befassen.
Ich wünschte, Access wäre ähnlich dokumentiert wie MySQL. Oder gibt es etwas, das ich nicht kenne? Los, raus mit den Links! :)
Gruß,
small-step
Hi,
Ich wünschte, Access wäre ähnlich dokumentiert wie MySQL. Oder gibt es etwas, das ich nicht kenne? Los, raus mit den Links! :)
ich finde, die MSDN ist die beste Doku die es gibt. Direkteinsprung zu Access: http://msdn.microsoft.com/library/en-us/dnanchor/html/odc_ancaccess.asp
Gruß,
Martin
Hallo Martin,
ich finde, die MSDN ist die beste Doku die es gibt. Direkteinsprung zu Access: http://msdn.microsoft.com/library/en-us/dnanchor/html/odc_ancaccess.asp
Hm... ich weiß nicht. Entweder ich bin zu blöd mit der MSDN zurechtzukommen, oder sie ist der letzte Dreck. Um Dich glücklich zu machen vermute ich jetzt einfach mal ersteres :)
Ich will eine so wunderbare Referenz wie auf http://www.php.net/manual/de/ mit den wirklich nützlichen Beispielen oder auf http://dev.mysql.com/doc/mysql/de/index.html. Es muss ja nicht auf Deutsch sein. Wäre zwar nicht schlecht, geht aber auch so. Wo ist denn die MSDN bitte derart umfangreich, übersichtlich und vor allem vollständig? Wahrscheinlich bin ich wirklich zu blöd.
Gruß,
small-step
Hallo alle!
Ich will eine so wunderbare Referenz wie auf http://www.php.net/manual/de/ mit den wirklich nützlichen Beispielen oder auf http://dev.mysql.com/doc/mysql/de/index.html. Es muss ja nicht auf Deutsch sein. Wäre zwar nicht schlecht, geht aber auch so. Wo ist denn die MSDN bitte derart umfangreich, übersichtlich und vor allem vollständig? Wahrscheinlich bin ich wirklich zu blöd.
Ach kommt schon... es wird doch jemanden hier geben, der eine bessere Doku kennt, oder?
Gruß,
small-step