0
 45   5   2
  View Articles

Name  
   ¼Õº´¸ñ  (2002-03-28 22:19:51, Hit : 17970, Vote : 1810)
Homepage  
   http://www.itmembers.net
Subject  
   ¿À¶óŬ µ¥ÀÌÅÍ °Ë»ö - JOIN (1) EquJoin
Áö±Ý±îÁö ¿ì¸®´Â ÇϳªÀÇ Å×À̺íÀ» ´ë»óÀ¸·Î °Ë»ö ¿¬½ÀÀ» Çß½À´Ï´Ù.
À̹ø ½Ã°£¿¡´Â µÎ °³ ÀÌ»óÀÇ Å×À̺í·ÎºÎÅÍ ¿øÇÏ´Â µ¥ÀÌÅ͸¦ °Ë»öÇÒ ¼ö ÀÖ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸±â·Î ÇÏÁÒ.

µÎ °³ ÀÌ»óÀÇ Å×À̺í·ÎºÎÅÍ ¿øÇÏ´Â Á¤º¸¸¦ °Ë»öÇϱâ À§Çؼ­´Â JOIN ¹®À» »ç¿ëÇÕ´Ï´Ù.
±×·¯³ª JOINÀÌ ¹Ýµå½Ã µÎ °³ ÀÌ»óÀÇ Å×ÀÌºí¿¡¼­¸¸ »ç¿ëµÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ÇϳªÀÇ Å×ÀÌºí¿¡¼­µµ JOINÀ» »ç¿ëÇÏ¿© ¸¶Ä¡ µÎ °³ÀÇ Å×À̺íÀÎ °Íó·³ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.(À̰ÍÀ» Self JoinÀ̶ó°í Çϴµ¥ ´ÙÀ½ ½Ã°£¿¡ ´Ù·ì´Ï´Ù.)

JOIN ¹æ¹ý¿¡´Â EQUJOIN, NON-EQUJOIN, OUTER JOIN, SELF JOIN µîÀÌ Àִµ¥
À̹ø ½Ã°£¿¡´Â EQUJOIN¿¡ ´ëÇØ¼­¸¸ ¾Ë¾Æº¸±â·Î ÇϰڽÀ´Ï´Ù.
³ª¸ÓÁö ¼¼ Á¾·ùÀÇ JOIN ¹æ¹ýÀº ´ÙÀ½ ½Ã°£¿¡ ´Ù·ç±â·Î ÇÏÁÒ.

¸ÕÀú ½Ç½ÀÀ» ÅëÇØ EQUJOINÀÌ ¾î¶² °ÍÀÎÁö ´«À¸·Î È®ÀκÎÅÍ ÇÏÁÒ.

¾Æ·¡¿Í °°ÀÌ EMP_SKILL Å×À̺í°ú SKILL Å×À̺íÀÌ ÀÖ´Ù°í ÇÒ ¶§,


EMP_NUM, SKILL_NO, SKILL_NAMEÀ» Çѹø¿¡ Ç¥½ÃÇÏ°í ½Í½À´Ï´Ù.

±×·±µ¥ EMP_NUM Ä÷³Àº EMP_SKILL Å×ÀÌºí¿¡¸¸ ÀÖ°í,
EMP_NO Ä÷³Àº EMP_SKILL°ú SKILL Å×ÀÌºí ¸ðµÎ¿¡ ÀÖ°í,
SKILL_NAME Ä÷³Àº SKILL Å×ÀÌºí¿¡¸¸ ÀÖ½À´Ï´Ù.
Áï Ç¥½ÃÇÏ°í ½ÍÀº Ä÷³ÀÌ µÎ °³ÀÇ Å×ÀÌºí¿¡ ³ª´µ¾î ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù.

ÀÌ·² ¶§ µÎ °³ÀÇ Å×ÀÌºí¿¡¼­ ¿øÇÏ´Â Ä÷³¸¸ °ñ¶ó¼­ Ç¥½ÃÇÏ·Á ÇÑ´Ù¸é JOINÀ» »ç¿ëÇÕ´Ï´Ù.

  1. ½Ç½ÀÀ» Çϱâ Àü¿¡ SKILL Å×À̺í Çϳª¸¦ ¸¸µì½Ã´Ù.
    ´ÙÀ½ Äڵ带 ±×´ë·Î º¹»çÇÏ¿© ½ÇÇàÇϸé À§¿Í °°Àº SKILL Å×À̺íÀÌ ¸¸µé¾îÁý´Ï´Ù.

    DROP TABLE SKILL;

    CREATE TABLE SKILL
    (  SKILL_NO CHAR(4) PRIMARY KEY,
       SKILL_NAME VARCHAR2(30) NOT NULL);

    INSERT INTO SKILL VALUES ('C101', 'CUSTOMER ENGINEER');
    INSERT INTO SKILL VALUES ('D101', 'DATABASE ADMIN');
    INSERT INTO SKILL VALUES ('E101', 'ERP ENGINEER');
    INSERT INTO SKILL VALUES ('P101', 'PROGRAMMER');
    INSERT INTO SKILL VALUES ('S101', 'SYSTEM PROGRAMMER');
    INSERT INTO SKILL VALUES ('S102', 'SYSTEM ADMIN');


  2. ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÏ¿© ±× °á°ú¸¦ »ìÆì º¾½Ã´Ù.

    SELECT        A.EMP_NUM,
            A.SKILL_NO,
            B.SKILL_NAME
    FROM        EMP_SKILL          A,
            SKILL                B
    WHERE        A.SKILL_NO = B.SKILL_NO;


    FROM ÀýÀ» À¯ÀÇÇØ¼­ º¸¼¼¿ä.
    EMP_SKILL Å×À̺íÀ» A¶ó°í Çϰí, SKILL Å×À̺íÀ» B¶ó°í ÇÑ´Ù´Â ¶æÀÔ´Ï´Ù.
    ±×·² ¶§, AÀÇ EMP_NUM°ú AÀÇ SKILL_NO¿Í BÀÇ SKILL_NAMEÀ» Ç¥½ÃÇ϶ó´Â ¶æÀÔ´Ï´Ù.
    ±×·±µ¥ ¸ðµÎ Ç¥½ÃÇ϶ó´Â °ÍÀº ¾Æ´Õ´Ï´Ù. WHERE ÀýÀ» º¸¸é AÀÇ SKILL_NO¿Í BÀÇ SKILL_NO°¡ °°Àº °Í¸¸ Ç¥½ÃÇ϶ó´Â °ÍÀÌÁÒ.

    ÀÌÇØµÇ½ÃÁÒ?


ÀÚ, ±×·³ Á¤¸®ÇÕ´Ï´Ù.

  • JOINÀº Çϳª ÀÌ»óÀÇ Å×ÀÌºí¿¡¼­ ¿øÇÏ´Â Ä÷³À» °Ë»öÇÒ ¶§ »ç¿ëÇÕ´Ï´Ù.
  • ´Ü, JOINÀº FROM Àý¿¡¼­ ¸í½ÃÇÑ Å×À̺íÀÇ Ä÷³¿¡¸¸ ÇÑÁ¤ÇÕ´Ï´Ù.
  • À̶§ Ä÷³ °£ÀÇ °ªµéÀÌ ¼­·Î ÀÏÄ¡ÇÒ ¶§¸¸ »ç¿ëÇÏ´Â JOINÀ» EQUJOINÀ̶ó°í ÇÕ´Ï´Ù.(À§¿¡¼­ ½Ç½ÀÇÑ °Å!)
  • ¹Ýµå½Ã WHERE ÀýÀÌ ÀÖ¾î¾ß°ÚÁÒ. À§ÀÇ ¿¹¿¡¼­´Â 'A¿Í BÀÇ EMP_NO°¡ °°Àº ·¹ÄÚµå Áß¿¡¼­'¶ó´Â Á¶°ÇÀÌ ÀÖ½À´Ï´Ù.
    ±×·±µ¥ ¸¸¾à WHERE Á¶°ÇÀÌ »ý·«µÇ¸é...? µÚ¿¡ ¼³¸íÀÌ ¾Æ¿À°ÚÁö¸¸ Cartesian Product¶ó´Â °ÍÀÌ ¹ß»ýÇÕ´Ï´Ù.(µÚ¿¡¼­ ´Ù½Ã ¼³¸íÇϰڽÀ´Ï´Ù.)
  • WHERE Á¶°ÇÀº ÃÖ¼ÒÇÑ Å×ÀÌºí ¼ö¿¡¼­ Çϳª¸¦ »« °Í¸¸Å­Àº ÀÖ¾î¾ß ÇÕ´Ï´Ù. ±×·¡¾ß Cartesian Product¶ó´Â °Ô ¹ß»ýÇÏÁö ¾Ê½À´Ï´Ù.
  • À§ÀÇ ¿¹¿¡¼­ EMP_SKILL Å×À̺íÀ» A·Î, SKILL Å×À̺íÀ» B·Î Ç¥ÇöÇßÁÒ? ÀÌ·² ¶§ A¿Í B¸¦ Correlation Name(¿¬°üµÈ À̸§)À̶ó°í ºÎ¸¨´Ï´Ù.


EQUJOIN¿¡ ´ëÇØ ½Ç½ÀÀ» Çϳª ´õ ÇØº¸ÁÒ.
´ÙÀ½°ú °°Àº Å×À̺íÀÌ ÀÖÀ» ¶§
AÀÇ EMP_NUM°ú CÀÇ EMP_NUMÀÌ °°°í, BÀÇ SKILL_NO¿Í CÀÇ SKILL_NO°¡ °°Àº ·¹Äڵ带 °ñ¶ó EMP_NUM, LAST_NAME, SKILL_NO, SKILL_NAMEÀ» Ç¥½ÃÇÏ·Á¸é ¾î¶»°ÔÇØ¾ß ÇÒ±î¿ä?




¸ÕÀú Á÷Á¢ ÇØº¸½Ã°í, ´äÀ» È®ÀÎÇϽ÷Á¸é ¾Æ·¡ÀÇ ºó °ø°£À» ¸¶¿ì½º·Î µå·¡±×ÇÏ¸é º¸ÀÔ´Ï´Ù.


SELECT        A.EMP_NUM,
        LAST_NAME,
        B.SKILL_NO,
        SKILL_NAME
FROM        EMP                A,
        SKILL                  B,
        EMP_SKILL        C
WHERE        C.EMP_NUM = A.EMP_NUM        
AND        C.SKILL_NO = B.SKILL_NO;




¸¶Áö¸·À¸·Î Cartesian Product(īƼÀü ÇÁ·Î´öÆ®)¿¡ ´ëÇØ ¤°í ³Ñ¾î°¡°Ú½À´Ï´Ù.
CartesianÀº ¿ø·¡ 'µ¥Ä«¸£Æ®ÀÇ' ¶Ç´Â 'µ¥Ä«¸£Æ®ùÊ'À̶ó´Â ¶æÀÔ´Ï´Ù. ¼öÇп¡¼­´Â ÆòÇà ¶Ç´Â Á÷°¢À̶ó´Â Àǹ̷Π»ç¿ëµË´Ï´Ù. Product´Â ¼öÇп¡¼­ '°ö'À̶ó´Â ¶æÀÌÁÒ.
µû¶ó¼­ Cartesina Product´Â 'Á÷°¢ÀÇ °ö'(?)À̶ó°í Ç®ÀÌÇϸé...... ´õ Çì±ò¸®°ÚÁÒ?
¼öÇп¡¼­ īƼÀü °öÀº ÀÓÀÇÀÇ µÎ ÁýÇÕ A, B°¡ ÀÖÀ» ¶§, AÀÇ ¿ø¼Ò a¿Í BÀÇ ¿ø¼Ò b¸¦ Á¶ÇÕÇÏ¿© ¸¸µç (a,b)ÀÇ ¼ø¼­½ÖÀ» ¸ðµÎ ¸ðÀº ÁýÇÕÀ» ¶æÇÕ´Ï´Ù. µû¶ó¼­ AÀÇ ¿ø¼Ò°¡ 3°³À̰í BÀÇ ¿ø¼Ò°¡ 4°³À̸é A¿Í BÀÇ Cartesian Porduct´Â 3¡¿4°³°¡ ³ª¿É´Ï´Ù.

¾Æ·¡ ±×¸²À» º¸½ÃÁÒ.


EMP_SKILLÀÇ ·¹Äڵ尡 7°³, SKILLÀÇ ·¹Äڵ尡 6°³°¡ µÇ´Ï±î µÎ Å×À̺íÀÇ Cartesian Product´Â 42°³ÀÇ ·¹Äڵ尡 Ç¥½ÃµË´Ï´Ù.

µÎ °³ÀÇ Å×À̺íÀ» JOINÇÒ ¶§ ½Ç¼ö·Î WHERE ÀýÀ» »ç¿ëÇÏÁö ¾Ê¾Ò°Å³ª WHERE Á¶°ÇÀ» À߸ø ÁöÁ¤ÇÏ¸é ¶æÇÏÁö ¾Ê°Ô ÀÌ·± Cartesian Product°¡ ¹ß»ýÇϱ⵵ ÇÕ´Ï´Ù.
À§ÀÇ ±×¸²À» º¸¸é µÎ Å×À̺íÀÇ SKILL_NO°¡ °°Àº ·¹ÄÚµå Áß¿¡¼­ EMP_NUM°ú SKILL_NO, SKILL_NAMEÀ» Ç¥½ÃÇϸé 7°³ÀÇ ·¹Äڵ尡 Ãâ·ÂµÇ¾î¾ß Çϴµ¥,
À߸øÇؼ­ WHERE A.SKILL_NO=B.SKILL_NO¶ó´Â Á¶°ÇÀ» ÁÖÁö ¾ÊÀ¸¸é 42°³ÀÇ ·¹Äڵ尡 Ãâ·ÂµË´Ï´Ù.

»ý°¢º¸´Ù ¼³¸íÀÌ ²Ï ±æ¾îÁ³³×¿ä. ŸÀÌÇÎÇÏ´À¶ó ¼Õ°¡¶ôÀÌ ´Ù ¾ÆÇÅ´Ï´Ù.
ÀÌ»ó µ¿Á־ƺü ¼Õº´¸ñÀ̾ú½À´Ï´Ù.

Prev
   ¿À¶óŬ µ¥ÀÌÅÍ °Ë»ö - JOIN (2) NonEquJoin, SelfJoin

¼Õº´¸ñ
Next
   ¿À¶óŬ µ¥ÀÌÅÍ °Ë»ö - ORDER BY, GROUP BY

¼Õº´¸ñ


Copyright 1999-2025 Zeroboard / skin by Zetyx