RIGHT 조인은 오른쪽의 테이블의 데이터를 기준으로 왼쪽의 테이블을 결합합니다. 출 력 결과는 오른쪽의 데이터를 모두 출력하고, 일치하는 왼쪽 데이터를 추가합니다.

| 쿼리 문법 |

SELECT 컬럼1, 컬럼2, 컬럼3,  from 테이블1 
RIGHT JOIN 
테이블2 ON 테이블1.컬럼 =테이블2.컬럼 

20.4.1 쿼리 실습

RIGHT 조인 명령을 통하여 일치하는 데이터를 출력해 보도록 하겠습니다.

| 예제 쿼리 |

SELECT a.FirstName, a.LastName, b.code, b.email from members AS a RIGHT JOIN orders1 as b ON a.email=b.email; 

| 콘솔 실습 화면 |

mysql> SELECT a.FirstName, a.LastName, b.code, b.email from members AS a RIGHT JOIN orders1 as b ON a.email=b.email;
+-----------+----------+-------+-------------------+
| FirstName | LastName | code  | email             |
+-----------+----------+-------+-------------------+
| lee       | hojin    | O_001 | hojin@jinyphp.com |
| lee       | hojin    | O_002 | hojin@jinyphp.com |
| jung      | eric     | O_003 | eric@jinyphp.com  |
| NULL      | NULL     | O_004 | NULL              |
| NULL      | NULL     | O_005 | NULL              |
| NULL      | NULL     | O_006 | NULL              |
| NULL      | NULL     | O_007 | NULL              |
| NULL      | NULL     | O_008 | NULL              |
| NULL      | NULL     | O_009 | NULL              |
| NULL      | NULL     | O_010 | NULL              |
+-----------+----------+-------+-------------------+
10 rows in set (0.00 sec)

20.4.2 PHP 실습

PHP 코드를 통하여 RIGHT 조인을 실습해 보도록 하겠습니다.

| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.

// RIGHT 조인을 처리합니다.
public function rightJoin($tbname1, $tbname2, $onWhere, $fields)
{
            $queryString = "SELECT ";

            // 컬럼필드 선택여부를 지정
            if ($fields) {
                $queryString .= $fields." ";
            } else {
                $queryString .= "* "; 
            }

            $queryString .= "from $tbname1 LEFT JOIN $tbname2 ON $onWhere"; 

            if ($result = mysqli_query($this->dbcon, $queryString)) {
                $this->msgEcho("쿼리성공] ".$queryString);
                $rowss = "";
                $row_cnt = mysqli_num_rows($result);
                for ($i=0; $i<$row_cnt; $i++) {
                    $rowss[$i] = mysqli_fetch_object($result);
                }

                $result->free();
                return $rowss;
            } else {
                    $this->msgEcho("Error] ".$queryString);
            } 

}

예제 파일 | join-03.php

<?php

	include "dbinfo.php";
	include "mysql.class.php";
 
	// ++ Mysqli DB 연결.
	$db = new JinyMysql();

	if ($rowss = $db->rightJoin("members","orders","members.email=orders.email")) {
		echo "tables fields = ". count($rowss) . "<br>";
 
		for ($i=0;$i<count($rowss);$i++) {
			echo $i."=";            
			print_r($rowss[$i]);
			echo "<br>";
		}
	}

?>

화면 출력

mysql connected!
쿼리성공] SELECT * from members LEFT JOIN orders ON members.email=orders.email
tables fields = 7
0=stdClass Object ( [Id] => 1 [LastName] => hojin [FirstName] => lee [Address] => shinchon [City] => seoul [Country] => Korea [manager] => infohojin [email] => hojin@jinyphp.com [code] => O_001 )
1=stdClass Object ( [Id] => 2 [LastName] => hojin [FirstName] => lee [Address] => shinchon [City] => seoul [Country] => Korea [manager] => infohojin [email] => hojin@jinyphp.com [code] => O_002 )
2=stdClass Object ( [Id] => [LastName] => lee [FirstName] => hojin [Address] => [City] => [Country] => Korea [manager] => infohojin [email] => [code] => )
3=stdClass Object ( [Id] => [LastName] => james [FirstName] => kim [Address] => youngdun-po [City] => seoul [Country] => Korea [manager] => info [email] => [code] => )
4=stdClass Object ( [Id] => [LastName] => 1234 [FirstName] => jiny [Address] => [City] => [Country] => Korea [manager] => [email] => [code] => )
5=stdClass Object ( [Id] => [LastName] => 1234 [FirstName] => jiny [Address] => [City] => [Country] => Korea [manager] => [email] => [code] => )
6=stdClass Object ( [Id] => [LastName] => 123400 [FirstName] => jiny [Address] => [City] => [Country] => Korea [manager] => [email] => [code] => )