>데이터 베이스 >MySQL 튜토리얼 >관련 데이터를 검색하기 위해 MySQL에서 여러 테이블을 효율적으로 조인하는 방법은 무엇입니까?

관련 데이터를 검색하기 위해 MySQL에서 여러 테이블을 효율적으로 조인하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-19 14:37:11526검색

How to Efficiently Join Multiple Tables in MySQL to Retrieve Related Data?

Inner Join을 사용하여 MySQL에서 여러 테이블 조인

MySQL에서 INNER JOIN 문을 사용하면 여러 테이블의 레코드를 결합할 수 있습니다. 공통 열. 다중 테이블 조인을 수행하려면 다음 구문을 사용할 수 있습니다.

SELECT columns
FROM table_1
INNER JOIN table_2
ON table_1.column = table_2.column
[...]
INNER JOIN table_n
ON table_n-1.column = table_n.column;

다음 시나리오를 고려하십시오. 테이블이 4개 있습니다.

  • 주문: (user_id, 가격_ID)
  • products_pricing: (id, product_id)
  • products: (id, name)
  • listings: (id, user_id, url)

특정 사용자(user_id = 7)의 모든 제품과 하이퍼링크를 검색하려고 합니다. 목록 테이블의 해당 URL을 사용하는 각 제품.

원래 쿼리:

SELECT *
FROM orders
INNER JOIN products_pricing
ON orders.pricing_id = products_pricing.id
INNER JOIN products
ON products_pricing.product_id = products.id
WHERE orders.user_id = '7';

이 쿼리는 ID 7을 가진 사용자에 대한 모든 제품을 반환하지만 각 제품의 URL은 포함되지 않습니다.

수정됨 쿼리:

각 제품의 URL을 포함하려면 목록 테이블에 또 다른 INNER JOIN을 추가할 수 있습니다.

SELECT
p.id,
p.name,
l.url,
o.user_id,
o.pricing_id
FROM orders AS o
INNER JOIN products_pricing AS pp ON o.pricing_id  = pp.id
INNER JOIN products         AS  p ON pp.product_id = p.id
INNER JOIN listings         AS  l ON l.user_id = o.user_id
WHERE o.user_id ='7' 
  AND l.id = 233 
  AND l.url = 'test.com';

이 쿼리에는 다음이 포함됩니다.

  • INNER JOIN 목록 AS l ON l.user_id = o.user_id: 이는 목록 테이블을 user_id 열을 기반으로 주문 테이블.
  • WHERE o.user_id ='7': 이는 주문 테이블의 user_id가 7인 행만 포함하도록 결과를 필터링합니다.
  • AND l.id = 233 AND l.url = 'test.com': 특정 ID(233) 및 URL('test.com')이 있는 행만 테스트되도록 추가 필터를 추가합니다. 결과에 포함됩니다.

이 수정된 쿼리를 사용하면 해당 제품을 연결하기 위한 URL과 함께 지정된 사용자의 제품을 성공적으로 검색할 수 있습니다.

위 내용은 관련 데이터를 검색하기 위해 MySQL에서 여러 테이블을 효율적으로 조인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.