2017-12-09 15 views
0

자습서를보고 있습니다. 내가해야할 일을 이해하지 못하는 코드가 있습니다. 왼쪽 조인에 대해 왼쪽 조인, 코드에 대한 설명이 필요합니다.

$sql = 'SELECT p.*, 
     a.screen_name AS author_name, 
     c.name AS category_name 
    FROM 
     posts p 
     LEFT JOIN 
     admin_users a ON p.author_id = a.id 
     LEFT JOIN 
     categories c ON p.category_id = c.id 
    WHERE 
     p.id = ?'; 

나는 읽을 수 있지만 난 그들을 이해하지 못했다. 누군가 제게 내가 공유 한 코드를 설명해 주실 수 있습니까? 미리 감사드립니다.

+0

왼쪽의 모든 JOIN이 수행하는 작업은 동일합니다. – Strawberry

답변

2

두 개의 테이블이 있다고 가정 해보십시오. 웹 사이트에 프로그래머에 대한 정보를 저장하는 테이블과 온라인 구매를 추적하는 테이블

프로그래머 표

+--------------------------------------------+ 
| ID | NAME  | AGE | ADDRESS | SALARY | 
+----+----------+-----+-----------+----------+ 
| 1 | Desire | 32 | 123 fake s| 3000.00 | 
| 2 | Jamin | 25 | 234 fake s| 2500.00 | 
| 3 | Jon  | 23 | 567 fake s| 2000.00 | 
| 4 | Bob  | 30 | 789 fake s| 1500.00 | 
| 5 | OtherGuy | 31 | 890 fake s| 1000.00 | 
| 6 | DudeMan | 32 | 901 fake s| 500.00 | 
+--------------------------------------------+ 

구매 인 표

+---------------------------------------------+ 
| ORDER_ID | PROG_ID | DATE | PRICE | 
+-------------+---------+---------------------| 
| 1   | 1  | 1-1-2017 | 100 | 
| 2   | 2  | 1-2-2017 | 200 | 
| 3   | 6  | 1-3-2017 | 300 | 
+---------------------------------------------| 

당신은 당신이 원하는 특정 컬럼을 포함하는 테이블에이 정보를 통합하는 새 테이블을 만들 필요가 결정한다.

예를 들어 배송 목적으로 ID, NAME, PRICE 및 DATE 열이있는 테이블 을 사용하는 것이 좋습니다.

현재 우리가 가지고있는 테이블은 모든 것을 단일 테이블에 표시하지 않습니다.

우리가이 테이블을 LEFT JOIN한다면, 우리는 합쳐질 정보가없는 곳에 NULL 값으로 원하는 컬럼을 채울 것입니다. 내가 다음 정보가 누락 될 수 있습니다 경우에도 올바른 테이블 에 합류, 시작 테이블에서 내가 원하는 열을 선택하고있어

SELECT ID, NAME, PRICE, DATE 
    FROM PROGRAMMERS 
    LEFT JOIN PURCHASES 
    ON PROGRAMMERS.ID = PURCHASES.PROG_ID; 

알 수 있습니다. SQL의 차이를 시각적으로 표현 TABLE

+-------------------------------------+ 
| ID | NAME  | PRICE | DATE | 
+----+----------+-----------------+---+ 
| 1 | Desire | 100  | 1-1-2017 | 
| 2 | Jamin | 200  | 1-2-2017 | 
| 3 | Jon  | NULL | NULL | 
| 4 | Bob  | NULL | NULL | 
| 5 | OtherGuy | NULL | NULL | 
| 6 | DudeMan | 300  | 1-3-2017 | 
+-------------------------------------+ 

에게 인한

https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins 확인해 결합한다.

+0

감사 원. 이제 나는 그것을 이해한다. 나는 단지 하나 더 간단한 질문을 가지고있다. 우리가 이전에 보여준 코드에서 왜 p! *를 선택해야합니까? ". *"는 문자 "p"로 시작하는 각 단어와 일치합니다. 그러나 나는 그것의 자손을 이해할 수 없다. – DesireOn

+0

@DesireOn "*"사용에 대해서는 https://stackoverflow.com/a/3639964/7813290을 참조하십시오. 이 경우에는 p에있는 모든 열을 얻는 것 같습니다. – Jamin

+1

나를 구해 주셔서 다시 한번 감사드립니다 !! <3 – DesireOn