표은 비즈니스 관계/연결을 나타냅니다. 당신이 언급 한 "관계 [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?
는 텍스트를 사용하여, 독립적으로 질문을 수정하세요. 링크가 일시적이며 이미지 부분을 잘라내거나 붙여 넣을 수 없습니다. 또한이 링크에는 수많은 관련없는 정보가 포함되어 있습니다. 또한 정확한 업데이트 정보를 가능한 한 정확하게 제공하십시오. 예를 들어 업데이트 코드를 얼마나 멀리 밟았습니까? – philipxy