2017-05-22 5 views
-2

prestashop 데이터베이스에서 테이블 ps_product와 ps_carrier 사이의 관계를 찾는 데 문제가 있습니다. 이 스키마는 http://doc.prestashop.com/display/PS16/Fundamentals+of+PrestaShop+Development에 있습니다.장거리와 관련된 테이블 간의 관계는 어떻게 찾습니까? MySQL

내 가게에서이 두 테이블을 결합하여 업데이트해야하지만 좋은 키를 찾는 데 어려움을 겪고 있습니다. 내 검색어는 어떻게 작성합니까?

+0

는 텍스트를 사용하여, 독립적으로 질문을 수정하세요. 링크가 일시적이며 이미지 부분을 잘라내거나 붙여 넣을 수 없습니다. 또한이 링크에는 수많은 관련없는 정보가 포함되어 있습니다. 또한 정확한 업데이트 정보를 가능한 한 정확하게 제공하십시오. 예를 들어 업데이트 코드를 얼마나 멀리 밟았습니까? – philipxy

답변

0

은 비즈니스 관계/연결을 나타냅니다. 당신이 언급 한 "관계 [ship] s"는 FK (외래 키)이며 쿼리에 필요하지 않습니다. 일부 컬럼의 서브 로우 값은 일부 키 컬럼의 서브 로우 값이어야합니다. 필요한 것은 테이블에있는 현재의 비즈니스 상황에 대해 행이 무엇을 말하고 있는지를 아는 것입니다. (어떤이 발생하는 어떤 상황 주어진 FKS 및 기타 제약 조건을 결정합니다.) Required to join 2 tables with their FKs in a 3rd table에서

:

모든 기본 테이블은 술어와 함께 제공 - 열 이름에 의해 파라미터 성명 템플릿입니다. 테이블 값은 술어를 진술로 만드는 행입니다.

쿼리

도 조건이있다. 그 값은 술어를 참으로 만드는 행입니다. 그 술어는 FROM, WHERE 및 다른 절에 따라 작성됩니다.

(CROSS 또는 내측)을 사이에두고 술어 가입; UNION은 OR을 그 사이에 놓습니다. 삽입물과 NOT과 ON을 제외하고 & 및 조건에서; SELECT가 T에서 C 열을 삭제하면 C의 FOR SOME (값은)이 T의 술어 앞에 놓입니다. (다른 사업자에 대한 기타가.)

그래서

product [p.id_product] is supplied by [p.id_supplier] ... 
AND ... 
AND s.id_product = ... 
... 
AND carrier [c.id_carrier] has reference [c.id_reference] ... 
AND ... = id_carrier 
AND ... 

당신은 다음 테이블 '술어를 알고 필요로하는 곳에

-- rows where product [id_product] is supplied by [id_supplier] ... 
ps_product(id_product, id_supplier, ...) 
-- rows where carrier [id_carrier] has reference [id_reference] ... 
ps_carrier(id_carrier, id_reference, ....) 

우리가 행을 얻을

ps_product s 
JOIN ... 
ON s.id_product = ... 
... 
JOIN ps_carrier c 
ON ... = id_carrier 
WHERE ... 

쓰기 부여 테이블을 ON 또는 WHERE 조건과 함께 사용하면 결과 p redicate는 원하는 행에 대한 것입니다.

Is there any rule of thumb to construct SQL query from a human-readable description?