> 백엔드 개발 > PHP 튜토리얼 > 이 mysql 문을 PHP로 작성하는 방법은 무엇입니까?

이 mysql 문을 PHP로 작성하는 방법은 무엇입니까?

WBOY
풀어 주다: 2016-08-08 09:06:46
원래의
1071명이 탐색했습니다.

주문 테이블: order
이 mysql 문을 PHP로 작성하는 방법은 무엇입니까?
주문 상품 테이블: order_goods
이 mysql 문을 PHP로 작성하는 방법은 무엇입니까?
즉, order_goods는 각 주문의 모든 항목을 Order에 저장합니다. 제품 정보
적격한 주문에 어떤 제품이 포함되어 있는지 확인해야 합니다.
예: 주문 테이블에서 order_no가 20160804164336873986인 주문을 찾고 싶습니다. 그러면 order 및 order_goods의 모든 필드가 나열됩니다.

답글 내용:

주문 테이블: order
이 mysql 문을 PHP로 작성하는 방법은 무엇입니까?
주문 상품 테이블: order_goods
이 mysql 문을 PHP로 작성하는 방법은 무엇입니까?
즉, order_goods는 각 주문의 모든 항목을 Order에 저장합니다. 제품 정보
적격한 주문에 어떤 제품이 포함되어 있는지 확인해야 합니다.
예: 주문 테이블에서 order_no가 20160804164336873986인 주문을 찾고 싶습니다. 그러면 order 및 order_goods의 모든 필드가 나열됩니다.

order_goods에는 하나의 order_id에 대한 여러 레코드가 있으므로 order_goods가 주문 쿼리에 연결된 상태로 남아 있으므로 연결 쿼리 문의 실행 효율성이 높지 않아 최적화가 필요합니다

<code>SELECT * FROM order_goods og LEFT JOIN  order o ON o.id=og.order_id</code>
로그인 후 복사

<code>SELECT * FROM order a JOIN IN order_goods b ON a.id=b.order_id WHERE a.order_no='20160804164336873986'

大概是这样,不知道写错没有</code>
로그인 후 복사

일대다 연관 모델

위 답변 중 일부를 읽어보니 질문의 요구 사항을 충족할 수 있을 것 같습니다. 강박장애가 있는 저는 주제를 질의할 때 * 기호를 사용하면 안 된다는 점을 말씀드리고 싶습니다. 원하는 만큼 필드를 작성하고, 필드 이름을 같은 이름으로 바꾸세요.

Join과 Split을 두 개의 쿼리로 사용하지 않는 것이 좋습니다. 또한 SELECT *

도 사용하지 않는 것이 좋습니다.

나도 약간의 강박장애가 있습니다. 최근에 인덱스에 노출된 적이 있습니다. mysql을 보면 쿼리할 조건 필드가 인덱스되어 있는지 묻고 싶습니다.
위 답변을 확인한 후 먼저 주문 테이블의 데이터를 쿼리한 다음 루프를 사용하여 각 번호 ID에 해당하는 order_goods 테이블의 데이터를 쿼리합니다. 이렇게 하면 별도의 쿼리로 인해 MySQL이 즉시 정지되지는 않습니다. (물론 데이터의 양이 특히 많을 때 보게 될 것입니다. 데이터의 양이 적다면 Left Join 사용에 대해서는 언급하지 않겠습니다.)

다중 테이블 쿼리. 관련

<code>select * from order,order_goods
where order.id = order_goods.order_id
and order.id = '20160804164336873986';

select * form order 
inner join order_goods 
on order.id = order_goods.order_id
where order.id = '20160804164336873986';</code>
로그인 후 복사

위의 두 가지 작성 방법은 동일하며, 두 개의 테이블 연결을 구현합니다.
세 개의 테이블 연결을 작성하는 방법도 유사합니다. 예를 들어 ID가 1인 학생의 과목과 성적을 쿼리합니다.

<code>SELECT * FROM `student`, `score`, `course`
WHERE `student`.`id` = `score`.`student_id` 
AND `score`.`course_id` = `course`.`id`
AND `student`.`id` = 1;

SELECT * FROM `student` 
INNER JOIN `score` 
ON `score`.`student_id` = `student`.`id` 
INNER JOIN `course` 
ON `course`.`id` = `score`.`course_id` 
WHERE `student`.`id` = 1;</code>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿