특정 조건에서 두 개의 테이블을 연결하고 싶습니다. 하나의 테이블 제품 (itemno, item, qty, price, stauts) 및 두 번째 테이블 링크 (Sno, itemno, status)를 가져옵니다. 링크의 항목 번호 및 상태는 제품을 참조하는 외래 키입니다.
질문은 다음과 같습니다 .- 테이블 링크가 상태가 판매되고 미 판매가 아닌 제품의 데이터 만 가져 오기를 원합니다 . .
기본 코드는 다음과 같습니다.
CREATE TABLE LINK(
SNO INT PRIMARY KEY,
PRODUCT_ITEMNO INT NOT NULL,
PRODUCT_STATUS CHAR(5) NOT NULL,
FOREIGN KEY ( PRODUCT_ITEMNO,
PRODUCT_STATUS )
REFERENCES PRODUCTS ( ITEMNO,
STATUS ) on update CASCADE ON DELETE RESTRICT;
위에서 언급 한 조건을 충족하려면 여기에 무엇을 추가해야합니까?
나는 당신이 여기서 기본을 오해하고 있다고 생각합니다. 테이블을 만드는 것은 한 가지이며 상호 작용 ( C reating, R eading, U pdating 및 D eleting 데이터)은 다른 것입니다.
예를 들어 다음과 같은 제품 테이블의 구조가 있다고 가정합니다.
CREATE TABLE products (
item_no INT PRIMARY KEY,
item VARCHAR(20) NOT NULL ,
qty SMALLINT UNSIGNED NOT NULL ,
price DECIMAL(8,2) NOT NULL ,
status ENUM('SOLD','UNSOLD') NOT NULL
);
이것을 당신의 what-ever 테이블 (이 경우 links
)에 연결하려면 , 당신은 그냥하세요.
CREATE TABLE links(
s_no INT PRIMARY KEY,
product_item_no INT NOT NULL,
FOREIGN KEY ( product_item_no )
REFERENCES products ( item_no )
ON UPDATE CASCADE
ON DELETE RESTRICT
);
두 테이블을 결합하여 제품 테이블에서 가져올 수 있으므로 상태가 필요하지 않습니다.
예를 들어 나중에 선택 쿼리를 실행합니다.
예.
SELECT l.*, p.status FROM links l
LEFT JOIN products p ON p.item_no = l.product_item_no
WHERE p.status = 'SOLD';
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다