Android 앱용 SQLite 데이터베이스에 3 개의 테이블이 있습니다. 아래 그림은 내가 작업하고있는 관련 테이블을 보여줍니다.왼쪽 외부 조인과 3 개의 테이블 연결
나는 측정의 특정 person_id로 묶여 각각 measurement_lines 및 역량에서, 두 개의 필드, 값과 이름을 얻기 위해 노력하고있어. 이 필드를 반환하는 쿼리를 만들려고하지만 약간의 운이 있습니다. 지금까지 얻은 것 중 가장 좋은 점은 다음과 같습니다.
SELECT name, value
FROM measurements, measurement_lines, competences
WHERE measurements.id = measurement_lines.measurements_id
AND measurement_lines.competences_id = competences.id
AND measurements.persons_id = 1
이 문제는 하나의 문제입니다. 이 쿼리는 사람이 측정 항목에 항목이 없을 때 (그리고 이후 measurement_lines에 아무 것도없는) 레코드를 반환하지 않습니다. 가치 칼럼이 비어 있더라도 항상 능력 이름 목록을 얻고 싶습니다. 나는 이것을 위해 Left Outer Join이 필요하다고 생각하지만, 제대로 작동하지 않는 것처럼 보입니다. 내부 조인에 대한
SELECT name, value
FROM measurements AS m, competences AS c
LEFT OUTER JOIN measurement_lines AS ml ON c._id = ml.competence_id
WHERE ml.measurement_id = m._id AND m.persons_id = 1
(괄호의 사용을 방지하기 위해 편집). 나는 그것이 괄호로 인해 발생한다고 믿는다. ml.measurements_id – Anubis
괄호를 사용하지 않는 버전으로 업데이트했는데, 이는 약간 까다 롭다. 나는 그것이 있다고 생각한다. 'WHERE' 절은 지정된 사람과 일치하는 결과 행과 competence와 일치하는 measurement_line이없는 결과 행을 선택합니다. –
다시 업데이트했습니다. 새 버전에서는 하위 쿼리 (비 상관)를 사용합니다. 조인을 직접 그룹화하지 않고이 권한을 얻는 것이 필요하다고 생각합니다. –