2013-04-15 2 views
0

INNER JOIN s와 함께이 쿼리를 작성할 수 있습니까?MySQL : INNER JOIN을 사용하여 이것을 변환하는 방법

SELECT links.product_id AS entity_id, products.sku, links.`linked_product_id` AS  linked_entity_id, products2.`sku` AS linked_skus 
FROM catalog_product_entity AS products, 
    catalog_product_link AS links, 
    catalog_product_entity AS products2 
WHERE links.`product_id` = products.`entity_id` 
    AND links.`linked_product_id` = products2.`entity_id` 

또한, catalog_product_link는 열 type_id을 가지고, 나는 type_id 값 끝에 AND catalog_product_link.type_id = 1 조건 1 만 행을 얻고 싶었다, 그러나 그것은 작동하지 않습니다. type_id=1으로 레코드 만 가져 오는 방법은 무엇입니까?

문에 WHERE links.type_id=1을 추가하면 문제가 발생합니다. product_id 아래의 모든 항목은 동일한 번호 (동일한 entity_id/product_id)이고 sku 아래의 항목은 모두 NULL입니다. 그래도 linked_product_idlinked_skus은 정확합니다.

더 많은 정보 :

catalog_product_entity

| entity_id | sku | ... | 
------------------- 
| 1  | abc |  | 
| 2  | qwe |  | 
| 3  | yui |  | 

catalog_product_link

| product_id (same as entity_id) | linked_product_id | type_id | 
---------------------------------------------------------------- 
|    1    |   5   | 1 | 
|    1    |   6   | 1 | 
|    2    |   1   | 2 | 
|    3    |   1   | 1 | 
|    3    |   2   | 1 | 
|    3    |   4   | 1 | 

답변

1

뭔가 같은 ...

SELECT 
    p.sku, 
    l.product_id AS entity_id, l.linked_product_id AS linked_entity_id 
FROM catalog_product_entity AS p 
    INNER JOIN catalog_product_link AS l 
     ON p.entity_id= l.product_id 
WHERE l.type_id = 1 
+0

오타를 수정하기 위해 빠른 편집을했습니다. 'WHERE l.type_id = 1'을 제외하면 작동합니다. 나는 내가 가지고있는 문제를 가지고있다. 나는 더 많은 설명을 위해 나의 포스트를 업데이트했다. 그 두 컬럼에 대해 숫자와 NULL 값을 얻는 이유를 아십니까? – musicliftsme

+0

질문을 다시 읽고 catalog_product_entity 테이블을 두 번 정의하고 있음을 깨달았습니다. 응답/코드를 업데이트했습니다. product_id에 의해 catalog_product_entity 테이블과 함께 catalog_product_entity 테이블을 조인 할 때 내 업데이트 된 게시물을 잘 처리해야합니다. 여기서 type_id = 1. 그것이 작동하지 않거나 당신이 당신의 테이블 내용이 현재 더 좋은 그림을 페인트 할지도 모르는 것처럼 보이는 것을 게시 할 수 있다면 알려주세요. –

+0

그래, 여전히 동일합니다. 원래 게시물을 업데이트하겠습니다. – musicliftsme

0
SELECT 
    links.product_id AS entity_id, 
    products.sku, 
    links.linked_product_id AS linked_entity_id, 
    products2.sku AS linked_skus 
FROM catalog_product_link AS links 
INNER JOIN 
    catalog_product_entity AS products ON products.entity_id = links.product_id 
INNER JOIN 
    catalog_product_entity AS products2 ON products2.entity_id = links.linked_product_id 
WHERE links.type_id = 1 
관련 문제