내 상황 :MySQL의 이상한 여러 내부 조인 상황
표 "_customers"
----------------------------------------------
customer_id | name | active
----------------------------------------------
1 'customer I' 1
----------------------------------------------
2 'customer II' 0
----------------------------------------------
표 "_projects"
----------------------------------------------
project_id | project_name | customer_id
----------------------------------------------
1 'project I' 1
----------------------------------------------
2 'project II' 2
----------------------------------------------
대다 표 " _project_sections "
----------------------------------------------
section_id | project_id
----------------------------------------------
2 1
----------------------------------------------
3 1
----------------------------------------------
4 1
----------------------------------------------
1 2
----------------------------------------------
필자의 경우 모든 고객이 필요하며 '활성'상태입니다. 또한 그들은 특정 섹션에서 있어야합니다. 예를 들어 섹션 1의 모든 활성 고객을 원합니다. 또한 id> 1 인 섹션이 필요한 경우에만 올바른 데이터를 얻으려고했지만 이상한 일이 발생했습니다. 섹션 1의 모든 활성 고객을 얻으려고해도 Query는 여전히 모든 프로젝트에 Section_id를 표시합니다. 2,3,4 ...
쿼리
SELECT c.customer_id, c.name, ps.section_id
FROM _customers c
INNER JOIN _projects p
ON p.customer_id = c.customer_id
INNER JOIN _project_sections ps
ON ps.project_id = p.project_id
WHERE c.active = 1 AND ps.section_id = 1
GROUP BY c.name
ORDER BY LOWER(c.name)
그리고 잘못된 결과 : 그것을 얻을하지 말자 때문에
Array
(
[customer_id] => 1
[name] => customer I
[section_id] => 1
)
어쩌면 누군가가 나를 도울 수 있습니다. 정말 고맙습니다!
당신의 묘사에서
표시 한 데이터에 대한 결과가 정확하지 않습니까? 섹션 1에는 하나의 프로젝트 만 있고 해당 프로젝트에는 오직 하나의 고객, 즉 고객 I 만 있습니다. 두 프로젝트 모두 단 하나의 고객, 고객 I 만 있으므로 실제로 지정한 섹션에 상관없이 해당 고객을 다시 얻게됩니다. – nnnnnn
정말 미안 해요. 당신 말이 맞았습니다. 나는 바로 잡았습니다. 따라서 위의 경우 결과는 비어 있어야합니다. 그러나 불행히도 그것은 아닙니다. 고맙습니다! – steve