온라인 상점을 관리하다 보면 다음과 같이 여러 테이블에서 데이터를 검색해야 하는 상황에 직면할 수 있습니다. 카테고리와 제품으로. 그러나 한 테이블의 모든 행이 다른 테이블에 해당 항목을 갖고 있지 않은 경우 문제가 발생합니다. 이 시나리오를 해결하기 위해 두 테이블에서 데이터를 선택하여 대응 관계가 없더라도 모든 행이 반환되도록 하는 방법을 살펴보겠습니다.
다음이 포함된 범주에 대해 하나의 테이블을 고려합니다. 열 ID 및 제목과 다른 열은 ID, 소유자 ID, 제목 및 가격 열이 있는 제품에 대한 것입니다. 여기서 ownerid는 상위 카테고리의 ID를 참조합니다. 다음 쿼리를 사용하여 각 카테고리의 최소 및 최대 가격과 함께 모든 카테고리를 검색하는 것을 목표로 합니다.
SELECT sc.*, MIN(s.price) AS minp, MAX(s.price) AS maxp FROM categories AS sc, products AS s WHERE s.ownerid = sc.id GROUP BY sc.id
그러나 이 쿼리는 관련 제품이 있는 카테고리만 검색합니다. 상품이 없는 상품은 생략되어 불완전한 결과를 남깁니다.
이 문제를 해결하고 해당 상품 유무에 관계없이 모든 카테고리를 선택할 수 있도록 하기 위해 다음과 같은 개념을 사용합니다. "외부 조인" 본질적으로 외부 조인에는 다른 테이블에 일치하는 항목이 없더라도 한 테이블의 행이 포함됩니다.
LEFT JOIN 구문을 사용하여 쿼리를 다음과 같이 수정합니다.
SELECT sc.*, IFNULL(MIN(s.price), 0) AS minp, IFNULL(MAX(s.price), 0) AS maxp FROM categories AS sc LEFT JOIN products AS s ON s.ownerid = sc.id GROUP BY sc.id
이 업데이트된 쿼리를 사용하면 모든 카테고리와 해당 카테고리의 최소 및 최대 가격을 검색할 수 있습니다. 제품이 없는 카테고리는 minp 및 maxp 값이 0이므로 모든 카테고리를 포함해야 한다는 요구 사항을 충족합니다.
빈 카테고리의 기본값으로 0을 사용하는 대신 다음을 선택할 수 있습니다. 대신 null을 반환합니다. 0 또는 null을 사용할지 여부는 애플리케이션의 특정 요구 사항에 따라 다릅니다.
MySQL에서 외부 조인의 개념을 익히고 null 값을 처리하면 여러 테이블에서 데이터를 효과적으로 추출하여 작업의 완전성과 정확성을 보장할 수 있습니다. 결과입니다.
위 내용은 여러 MySQL 테이블에서 데이터를 선택하고 누락된 대응을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!