검색 결과에 아무런 결과도 없었습니다. 질문을 덜 모호하게 만들 수 없기 때문입니다. 나는했습니다과 같은 DB : 내가 가입하고 NULL이 그 때문에 잘못의 이해한다세 테이블이있는 MYSQL 피벗은 NULL을 반환합니다.
ID| NUMBER |RESTRICTED| TITLE|
1 | one | 1 | (null)|
2 | two | 0 | (null)|
select contracts.*, agents.title from pivot
left join users on pivot.userid = users.id
left join agents on pivot.agentid = agents.id
left join contracts on pivot.contractid = contracts.id
where users.id = 2
가 반환
CREATE TABLE users
(`id` int, `name` varchar(4))
;
INSERT INTO users
(`id`, `name`)
VALUES
(1, 'john'),
(2, 'jane'),
(3, 'max')
;
CREATE TABLE agents
(`id` int, `title` varchar(25))
;
INSERT INTO agents
(`id`, `title`)
VALUES
(1, 'APERTURE'),
(2, 'MESA')
;
CREATE TABLE pivot
(`contractid` int, `userid` varchar(4), `agentid` varchar(4))
;
INSERT INTO pivot
(`contractid`, `userid`, `agentid`)
VALUES
(1, '1', '1'),
(1, '2', NULL),
(2, NULL, '1'),
(2, '2', NULL)
;
CREATE TABLE contracts
(`id` int, `number` varchar(3), `restricted` int)
;
INSERT INTO contracts
(`id`, `number`, `restricted`)
VALUES
(1, 'one', 1),
(2, 'two', 0)
;
와 나는 같은 질문을 할 때 사용자 ID가 2 -> agentid가 NULL 인 행의 피벗 테이블에서 NULL이기 때문에 리턴됩니다.
검색을 올바르게 수행하고 필요한 모든 데이터를 반환하는 방식으로 쿼리를 작성하는 방법. 많은 분들께 감사드립니다.
편집 : 나는
select contracts.*, users.id, agents.title from contracts
left join pivot on contracts.id = pivot.contractid
left join agents on pivot.agentid = agents.id
left join users on pivot.userid = users.id
where pivot.contractid in (
select pivot.contractid from pivot where pivot.userid = 2
)
ID NUMBER RESTRICTED TITLE
1 one 1 APERTURE
1 one 1 (null)
2 two 0 APERTURE
2 two 0 (null)
하지만 (위의 높은 질의의 방식을 반환하는 등의 쿼리와 동일한 결과를 원하는이 스크립트의 결과에서 쿼리와 나는 위선적 인 말투 때문에 제공된 쿼리 (where in) 사용
선생님, 편집 후 내 질문을보십시오. 어떤 아이디어? – ClassyPimp
내 솔루션 "afteredit"보기 –