안녕하세요, 저는 특정 MySQL Join 쿼리를 작성하는 데 어려움을 겪고 있습니다.MySQL 가입 질문
제품 데이터가 포함 된 표가 있습니다. 각 제품은 여러 카테고리에 속할 수 있습니다. 이 m : m 관계는 링크 테이블을 사용하여 충족됩니다.
이 특정 쿼리의 경우 특정 카테고리에 속한 모든 제품을 검색하려고하지만 각 제품 레코드와 함께 해당 제품이 속한 다른 범주도 반환하고자합니다.
각 제품 레코드에 대한 추가 쿼리를 수행하는 대신 범주 테이블에서 내부 조인을 사용하여이 작업을 수행하는 것이 이상적입니다. 이는 매우 비효율적입니다. 다음과 같이
내 simplifed 스키마는 대략 설계되었습니다
제품 테이블 :
product_id, name, title, description, is_active, date_added, publish_date, etc....
카테고리 테이블 :
category_id, name, title, description, etc...
PRODUCT_CATEGORY 테이블 :
product_id, category_id
I의 시간 ave는 지정된 category_id에 속한 모든 제품을 검색 할 수있는 다음 쿼리를 작성했습니다. 그러나, 나는 정말 제품이 속한 다른 범주를 검색하는 방법을 찾기 위해 고투하고있다. 내가 객체에 저장된 모든 카테고리 데이터가되고, 내 응용 프로그램 코드가 알아서 수
SELECT p.product_id, p.name, p.title, p.description
FROM prod_products AS p
LEFT JOIN prod_product_category AS pc
ON pc.product_id = p.product_id
WHERE pc.category_id = $category_id
AND UNIX_TIMESTAMP(p.publish_date) < UNIX_TIMESTAMP()
AND p.is_active = 1
ORDER BY p.name ASC
나는 그냥 카테고리 ID의 각 releated 반환 제품 행을 검색 드리겠습니다.
많은 감사,
리처드
대단히 감사합니다. 나는 그 테이블에 대한 조인을 두 번째로 수행 할 생각이 없었으며 연산자가 아닌 연산자를 사용했습니다. – rbaker86