두 테이블 0 10 859

by neuclear [SQL Query] [2020.03.26 15:15:18]


캡처454.PNG (135,223Bytes)

사진에서 표시한 두 테이블중 reservationseat 에서 예매좌석이름과 예매하면 seat 의 좌석이름과  조인을 해야 할거 같은데요 어떤식으로 조인을 해야 한 사람이 한 좌석 예매를 하면 다른 사람이 예매를 못하게 할 수 있을까요?

by 마농 [2020.03.26 15:33:03]

1. 조인은 이름으로 하면 안되고 코드로 해야 합니다.
2. 중복 방지를 위한 그룹핑 기준은 스케줄코드가 될 듯 합니다.
 - 해당 스캐줄코드에 좌석코드가 중복인지 체크하세요.
 

SELECT COUNT(*) cnt
  FROM reservation r
     , reservationseat rs
 WHERE r.rcode = rs.rcode
   AND r.shcode = '예약스케줄코드'
   AND rs.rscode = '예약좌석코드'
;
-- cnt 가 0 이면 예약 진행
-- cnt 가 0 이 아니면 "한 발 늦었군요~" 오류 메시지

 


by neuclear [2020.03.26 17:01:36]

아 그렇군요 즉, CNT는 겹치는게 있으면 1이 카운트 되는것이군요

정말 감사합니다(_ _)


by neuclear [2020.03.26 17:06:59]

저 그런데 reservation r과 reservationseat rs에서 rs는 알겠는데 reservation.rcode는 seat테이블의 scode를 의미하는 것인가요?


by 마농 [2020.03.26 17:14:12]

reservation 의 rcode 는 해당 테이블의 PK 인 예매코드 이고
reservationseat 의 rscode 가 좌석코드라고 생각했습니다.
그런데 그게 아니라면??? 뭔가 좀 이상하네요. 테이블 설계가...


by neuclear [2020.03.26 17:42:27]

그럼 조인을 SEAT 테이블에 SCODE와 RESERVATIONSEAT 테이블의 RSCODE와 연결하여서 

CNT가 1보다 큰값이 나오면 중복이라 하면 안되는 것인가요?


by 마농 [2020.03.26 17:47:02]

1. 우선 RSCODE 가 과연 좌석코드가 맞는지 의문이네요?
 - 맞다고 생각해서 작성해 드리긴 했지만. 지금 보니 아닌 것 같네요.
 - reservationseat 테이블에 좌석코드인 scode 가 있어야 할 것 같네요.
2. seat 테이블과의 조인은
 - 좌석명이 필요할 때 조인 하는 것이고
 - 지금은 좌석명이 필요한게 아니라 조인이 필요 없습니다.
 - 다만 위에서 언급했듯이 scode 항목이 설계에서 빠진 듯 하네요.


by neuclear [2020.03.27 09:21:44]

그러면 SCODE가 RESERVATIONSEAT에 연결하면 LOOP가 생기는데 상관 없나요?


by 마농 [2020.03.27 12:52:00]

"연결", "LOOP" 라는 단어가 왜 나오는지 모르겠습니다.
reservationseat 테이블에 scode 라는 컬럼이 있어야 할 것 같다고 했습니다.


by neuclear [2020.03.27 14:51:49]

scode가 seat 테이블에 있는데요 reservationseat 테이블에 scode를 넣으려면 외래키로 존재해야 하는것이 아닌가요?


by 마농 [2020.03.27 14:52:57]

네, 맞습니다.
reservationseat 의 테이블명 자체가 reservation + seat 의 의미죠.
각 테이블의 키를 참조하는 형태로 설계 되었어야 합니다.
그래서 저는 당연히 rscode 가 좌석코드 이겠거니 하고 생각했던건데.
자세히 보니 아닌 듯 하여 설계에 문제가 있는 것 같다고 다시 답변 드린 것입니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입