programing

업데이트 참여에 대한 MySQL 구문

shortcode 2022. 11. 4. 22:18
반응형

업데이트 참여에 대한 MySQL 구문

이렇게 생긴 테이블이 두 개 있어요.

기차

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| TrainID  | varchar(11) | NO   | PRI | NULL    |       |
| Capacity | int(11)     | NO   |     | 50      |       |
+----------+-------------+------+-----+---------+-------+

예약

+---------------+-------------+------+-----+---------+----------------+
| 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    |                |
+---------------+-------------+------+-----+---------+----------------+

현재 예약이 취소될 경우 열차의 용량을 늘리는 쿼리를 작성하려고 합니다.가입을 수행해야 하는 것은 알지만 Update 스테이트먼트에서 실행하는 방법을 잘 모르겠습니다.예를 들어, 특정 예약이 있는 열차의 정원을 얻는 방법을 알고 있습니다.아이디 이런 거

select Capacity 
  from Train 
  Join Reservations on Train.TrainID = Reservations.Train 
 where ReservationID = "15";

하지만 저는 이 작업을 수행하는 쿼리를 만들고 싶습니다.

Increment Train.Capacity by ReservationTable.NoSeats given a ReservationID

가능하다면 임의의 시트 수만큼 증가시키는 방법도 알고 싶습니다.덧붙여서 자바 트랜잭션 증분을 한 후 예약을 삭제할 예정입니다.삭제가 거래에 영향을 미칩니까?

도와줘서 고마워요!

MySQL은 다음과 같은 다중 테이블 구문을 지원합니다.

UPDATE Reservations r JOIN Train t ON (r.Train = t.TrainID)
SET t.Capacity = t.Capacity + r.NoSeats
WHERE r.ReservationID = ?;

를 갱신할 수 있습니다.Train테이블에서 삭제하다Reservations같은 트랜잭션에 테이블이 있습니다.업데이트를 먼저 수행한 후 삭제를 다시 수행하면 됩니다.

다음으로 갱신할 값을 결정하기 위한 join을 포함하는 UPDATE 문의 다른 예를 나타냅니다.이 경우 payee_id가 0(할당되지 않은 경우)이면 관련 계정 지불 ID로 transactions.payee_id를 업데이트하고 싶습니다.

UPDATE transactions t
  JOIN account a ON a.id = t.account_id
  JOIN account ap ON ap.id = a.pmt_act_id
  SET  t.payee_id = a.pmt_act_id
 WHERE t.payee_id = 0

언급URL : https://stackoverflow.com/questions/2114534/mysql-syntax-for-join-update

반응형