SQL을 사용하여 두 테이블을 조인합니다. 나는 헌장 비행 정보를 포함하는 테이블과 배정 된 승무원을 포함하는 테이블에 합류하고 있습니다. 필자의 결과에서 필자는 승무원 테이블에 "조종사"라는 값만있는 행만 표시하고 "조종사"는 표시하지 않습니다.SQL JOIN은 특정 값이없는 행을 결과로 제한합니다.
답변
괜찮은 쿼리를 제공하기 위해 우리에게 스키마를 제공해야합니다. 제 생각에 가장 중요한 것은 조종사 및 부조종사가 누구인지 어떻게 판단 할 수 있으며 각 사람을 어떻게 비행과 관련 지을 수 있는지입니다.
나는 이런 식으로 뭔가 도움이 될 생각 :
SELECT * FROM Charter C
INNER JOIN Crew ON (Charter.CHAR_TRIP = Crew.CHAR_TRIP)
WHERE Crew.Crew_Job = 'PILOT' AND (SELECT COUNT(*) FROM Charter
INNER JOIN Crew ON (Charter.CHAR_TRIP = Crew.CHAR_TRIP)
WHERE Crew.Crew_Job = 'CoPilot'
AND Charter.Chart_Trip = C.ChartTrip) = 0
이 깨끗한 솔루션이 아닐 수도 있지만 ..이 일을해야한다.
관련 테이블에 대한 ERD를 추가했습니다. CREW_JOB에는 "Pilot"또는 "Copilot"이 포함됩니다. 나는 여행을위한 유일한 ID가 될 것 인 CHAR_TRIP 위에서 그들을 맺어 줄 것이다. –
SELECT * FROM TABLE_A JOIN TABLE_B ON (TABLE_A.Value = TABLE_B.Value) WHERE TABLE_A.OtherValue = 'Pilot'
이 내 머리 위로 떨어져있다
, 그래서 어떤 구문이 해제 될 수 있습니다. 요점은WHERE
절입니다. 원하는 값을 지정할 수 있습니다 (귀하의 경우에는
Pilot
을 찾고 있습니다).
편집 : 가치를 막으려면 WHERE TABLE.VALUE != 'Copilot'
!=
과 같이 할 수 있습니다.이 값은 어떤 SQL인지에 따라 <>
으로 작성해야합니다.
EDIT2 : 내 SQL-Server는 멍청하고 연결이되지 않으므로 이것은 또한 내 머리 꼭대기에서 벗어나므로 조금은 해킹 일로 생각된다. 그러나 나는 그것이 일을 할 것이라고 생각한다. . :)
SELECT [CHARTER].*, COUNT(*) as Tally FROM [CHARTER] JOIN [CREW] ON ([CHARTER].[CHAR_TRIP] = [CREW].[CHAR_TRIP]) WHERE [CREW].[CREW_JOB] = 'PILOT' OR [CREW].[CREW_JOB] = 'COPILOT' GROUP BY [CHARTER].* HAVING Tally = 1
이것은 모든 비행편에 파일럿이 있다고 가정하지만 모든 비행에 부조종사가있는 것은 아닙니다. 원하는 정확한 디스플레이를 얻으려면 서브 쿼리 (Tally
열 제거)로 사용해야 할 수도 있습니다.
예, 결과가 "파일럿"인 행으로 결과를 제한하고 싶습니다. 예를 들어, 특정 전세기 ID에 대한 파일럿 및 CoPilot이있는 경우 조종사 테이블에 부조종사 또는 조종사 및 부조종사 만있는 행이 필요합니다. –
SELECT *
FROM charter ch
JOIN crew cr ON ch.char_trip = cr.char_trip
WHERE NOT EXISTS(SELECT *
FROM crew cr2
WHERE cr2.char_trip = ch.char_trip
AND cr2.crew_job != 'PILOT')
트릭을해야한다고 생각합니다. 3 행의 승무원 테이블에 대한 조인은 선택 사항이며 해당 테이블의 결과가 필요한 경우에만 가능합니다. NOT EXISTS anti-join은 주어진 여행에 대한 모든 승무원을 평가하고 조종사가 아닌 것을 확인합니다.
- 1. 다른 테이블에 특정 값이없는 모든 행을 선택하십시오.
- 2. MySQL 쿼리 : 특정 값이없는 행을 선택하는 방법?
- 3. 특정 값이없는 항목 선택
- 4. 값이없는 $ _POST
- 5. WPF ItemControl : 항목 유형을 특정 항목으로 제한합니다.
- 6. 값이없는 객체
- 7. 이중 값이없는 JOIN
- 8. 다른 MySQL 쿼리의 결과로 행을 바인드하는 방법은 무엇입니까?
- 9. 많은 AND 연산자가있는 SQL Server JOIN은 데이터를 반환하지 않습니다. 왜?
- 10. 하나의 키에는 값이 있지만 다른 하나의 키에는 값이없는 행을 찾기위한 단일 SQL 쿼리
- 11. mysqli 결과로 행 배열 가져 오기
- 12. SQL 행을 열로 변환
- 13. 다른 선택 결과로 SQL 테이블을 만들려면 어떻게해야합니까?
- 14. var =을 Access의 SQL 문의 결과로 설정하십시오.
- 15. 데이터베이스에서 특정 행을 삭제하십시오.
- 16. 테이블보기에서 특정 행을 삭제하십시오.
- 17. mySQL 쿼리, 두 행을 병합하고 출력 결과로 다른 열을 추가하십시오.
- 18. NSMutableArray에 값이없는 인덱스
- 19. 값이없는 열은 어떻게 선택합니까?
- 20. 값이없는 경우에만 삽입하십시오.
- 21. 어떻게 행을 만들기 위해 어떤 테이블을 조인했는지에 따라 SQL 결과 집합에 결과로 리터럴을 넣으시겠습니까?
- 22. C# SQL 데이터베이스 - 테이블에서 모든 특정 행을 읽는 방법?
- 23. Magento의 특정 국가에 대한 제품 그룹의 배송지 주소를 제한합니다.
- 24. 특정 UITextfield에 대한 복사, 붙여 넣기 옵션을 제한합니다.
- 25. "Checked"true 값이없는 동적 테이블 CheckBoxes
- 26. DataTable에서 특정 행을 제거하는 방법은 무엇입니까?
- 27. SQL 행을 열
- 28. SQL 쿼리에서 행을 복제합니다.
- 29. Datagrid는 특정 열에서 행을 선택했습니다.
- 30. PHP는 쿼리에서 특정 행을 반환
더 명확하게 이해할 수 있도록 테이블 구조를 게시하십시오. –
@ Nija의 게시물을 사용해보십시오. 당신은 테이블 구조를 추가 할 수 있습니까? 당신은 내부 조인이 필요하고 @ Table = value를 사용하여 그것을 필터링해야합니다. – Crimsonland
관련 ERD를 추가했습니다. –