질문에 설명 된 내용에 따라 특정 템플릿에 대한 모든 애셋을 가져와야합니다. 테이블 구조를 만들었지 만 테이블에 관계 제약 조건을 정의하지는 않았지만 쿼리를 공식화하는 동안 사용했습니다.
Asset
테이블을 AssetForPresentation
테이블에 가입시킬 수 있습니다. AssetForPresentation 테이블을 통해 Presentation
및 Position
테이블을 조인 할 수 있습니다. Template
에 대한 관계는 Position
테이블을 통해 만들 수 있습니다. 따라서 일치하는 모든 레코드를 가져 오려면 템플릿 테이블을 자산 집합 테이블에 추가하십시오.
아래 링크에서 데모를 볼 수 있습니다. 도움이
Click here to view the demo in SQL Fiddle.
희망.
스크립트 :
CREATE TABLE Presentation
(
id INT NOT NULL AUTO_INCREMENT
, name VARCHAR(30) NOT NULL
, PRIMARY KEY (id)
);
CREATE TABLE Template
(
id INT NOT NULL AUTO_INCREMENT
, name VARCHAR(30) NOT NULL
, PRIMARY KEY (id)
);
CREATE TABLE Position
(
id INT NOT NULL AUTO_INCREMENT
, zorder INT NOT NULL
, fk_template INT NOT NULL
, PRIMARY KEY (id)
);
CREATE TABLE Asset
(
id INT NOT NULL AUTO_INCREMENT
, name VARCHAR(30) NOT NULL
, description VARCHAR(30) NOT NULL
, PRIMARY KEY (id)
);
CREATE TABLE AssetForPresentation
(
fk_asset INT NOT NULL
, fk_presentation INT NOT NULL
, fk_position INT NOT NULL
);
INSERT INTO Presentation (name) VALUES
('presenation 1'),
('presenation 2');
INSERT INTO Template (name) VALUES
('template 1'),
('template 2');
INSERT INTO Position (zorder, fk_template) VALUES
(1, 1),
(2, 2);
INSERT INTO Asset (name, description) VALUES
('asset 1', 'asset description 1'),
('asset 2', 'asset description 2');
INSERT INTO AssetForPresentation (fk_asset, fk_presentation, fk_position)
VALUES
(1, 1, 1),
(1, 2, 1),
(2, 2, 1),
(2, 2, 2);
SELECT *
FROM Asset A
RIGHT OUTER JOIN AssetForPresentation AP
ON A.id = AP.fk_asset
RIGHT OUTER JOIN Presentation P
ON P.id = AP.fk_presentation
RIGHT OUTER JOIN Position PO
ON PO.id = AP.fk_position
RIGHT OUTER JOIN Template T
ON T.id = PO.fk_template
WHERE T.id = 1;
출력 :
ID NAME DESCRIPTION FK_ASSET FK_PRESENTATION FK_POSITION ZORDER FK_TEMPLATE
-- ------- ------------------- -------- --------------- ----------- ------ -----------
1 asset 1 asset description 1 1 1 1 1 1
1 asset 1 asset description 1 1 2 1 1 1
2 asset 2 asset description 2 2 2 1 1 1
무엇이 당신 질문입니까? – Hamish
나는 이것을 어떻게 질문 할 것인가 ... 내가 쓴 것에 걸쳐 명확하게 엮여있는 것이 아니라,이 질문의 제목은 단순한 "SQL : 모든 자산과 그들의 위치 선택"을 말하고있다. "SQL"솔루션을 찾고 있다면 항상 "SQL"로 제목을 붙입니다. – dcolumbus
메모 주셔서 감사합니다, @ 시바. – dcolumbus