ich zwei Tabellen, die diese aussehenMySQL-Syntax für Update-Join
Zug
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| TrainID | varchar(11) | NO | PRI | NULL | |
| Capacity | int(11) | NO | | 50 | |
+----------+-------------+------+-----+---------+-------+
Reservierungen
+---------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+----------------+
| ReservationID | int(11) | NO | PRI | NULL | auto_increment |
| FirstName | varchar(30) | NO | | NULL | |
| LastName | varchar(30) | NO | | NULL | |
| DDate | date | NO | | NULL | |
| NoSeats | int(2) | NO | | NULL | |
| Route | varchar(11) | NO | | NULL | |
| Train | varchar(11) | NO | | NULL | |
+---------------+-------------+------+-----+---------+----------------+
Derzeit Ich versuche, eine Abfrage zu erstellen, die erhöht wird Kapazität in einem Zug, wenn eine Reservierung storniert wird. Ich weiß, dass ich einen Join ausführen muss, aber ich bin nicht sicher, wie es in einer Update-Anweisung zu tun ist. Zum Beispiel weiß ich, wie die Kapazität eines Zugs bekommen mit einer gewissen einer Reservierungs gegeben, etwa so:
select Capacity
from Train
Join Reservations on Train.TrainID = Reservations.Train
where ReservationID = "15";
Aber ich mag die Abfrage konstruieren, das dies tut -
Increment Train.Capacity by ReservationTable.NoSeats given a ReservationID
Wenn möglich, möchte ich auch wissen, wie man um eine beliebige Anzahl von Sitzen inkrementieren kann. Nebenbei möchte ich die Reservierung löschen, nachdem ich das Inkrement in einer Java-Transaktion ausgeführt habe. Wirkt sich das Löschen auf die Transaktion aus?
Danke für die Hilfe!
Bah, ich habe versehentlich die 'SET' vor die' JOIN' gesetzt. NB Leute – deed02392