difference between explicit inner join and implicit

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • YZXIA

    difference between explicit inner join and implicit

    Is there any difference between explicit inner join and implicit
    inner join

    Example of an explicit inner join:

    SELECT *
    FROM employee
    INNER JOIN department
    ON employee.Depart mentID = department.Depa rtmentID

    Example of an implicit inner join:

    SELECT *
    FROM employee, department
    WHERE employee.Depart mentID = department.Depa rtmentID
  • christopher.secord@gmail.com

    #2
    Re: difference between explicit inner join and implicit

    On Mar 31, 1:02 pm, YZXIA <yz...@hotmail. comwrote:
    Is there any difference between explicit inner join and implicit
    inner join
    The execution plan for both queries is the same, so that suggests to
    me that they are functionally identical.

    Comment

    • Shuurai

      #3
      Re: difference between explicit inner join and implicit

      Is there any difference between  explicit inner join and implicit
      inner join
      Technically no, but it's a good idea to make it a habit to use the
      explicit inner join. It is considered the standard nowadays, is
      easier to read and debug, and is consistent with the OUTER JOIN
      syntax.

      Comment

      • Ed Murphy

        #4
        Re: difference between explicit inner join and implicit

        --CELKO-- wrote:
        The real difference is in the mindset of programmers. Those that
        write with infixed notation thing in terms of a linear sequence of
        joins, as if they were limited to simple binary Theta operators. The
        programmers that use the older notation will use BETWEEN, IN () and
        other predicates that work with multiple terms.
        Like this, you mean? And are you recommending or deprecating it?

        select a.x, b.y
        from table1 a
        join table2 b on a.x between b.y and 500

        Comment

        • --CELKO--

          #5
          Re: difference between explicit inner join and implicit

          >Technically no, but it's a good idea to make it a habit to use the explicit inner join. It is considered the standard nowadays, <<

          Not when I was on the Standards Committee; did you join later than
          me?
          >is easier to read and debug, <<
          NO, it isn't; have you seen any of the human factors research? The ON
          clauses can be spread so far from the matching tables debugging time
          increases. Multiple parameter predicates like BETWEEN and IN are
          split and their higher level meaning is lost.

          But it looks like ACCESS and has a nice binary operator feel that
          procedural programmers like.
          >and is consistent with the OUTER JOIN syntax. <<
          Yes, that is the reason it exists.

          Comment

          • Hugo Kornelis

            #6
            Re: difference between explicit inner join and implicit

            On Tue, 1 Apr 2008 07:01:14 -0700 (PDT), --CELKO-- wrote:
            >>Like this, you mean? <<
            >
            >No, try this:
            >
            >SELECT ..
            FROM A, B, C
            WHERE A.x BETWEEN B.y AND C.z;
            >
            >Versus:
            >
            >SELECT ..
            FROM A
            INNER JOIN
            B
            ON A.x >= B.y
            INNER JOIN
            C
            ON C.z <= A.x;
            >
            >The "between" is lost in what typographers call the law of proximity
            >because things are split into binary operators.
            Hi Joe,

            And both versions hide the actual relationship between B and C.

            SELECT ..
            FROM B
            INNER JOIN C
            ON C.z >= B.y
            INNER JOIN A
            ON A.x BETWEEN B.y AND C.z;

            Now we have the "between", *and* the relationship between B and C is
            shown explicitly. Looks like a winner to me!

            (Though I have to admit that I'd be hardpressed to come up with an
            example that makes it even vaguely believeable that a query such as this
            would ever show up in the real world).

            --
            Hugo Kornelis, SQL Server MVP
            My SQL Server blog: http://sqlblog.com/blogs/hugo_kornelis

            Comment

            • --CELKO--

              #7
              Re: difference between explicit inner join and implicit

              >Now we have the "between", *and* the relationship between B and C is shown explicitly. Looks like a winner to me! <<

              No, no! What you have done is hide redundancy which would have been
              clearly shown in a simple WHERE clause. I don't think I am the only
              guy who puts all the WHERE clause predicates into a tool to sort them
              to see exactly what predicates go to which tables.

              >(Though I have to admit that I'd be hard pressed to come up with an example that makes it even vaguely believable that a query such as this would ever show up in the real world). <<
              LOL! We have seen much worse in this newsgroup!

              Comment

              • Neil H

                #8
                Re: difference between explicit inner join and implicit

                If anyone is willing to help a novice,

                is there any difference between the JOIN operator and the INNER JOIN
                operator?

                For example, in a sample database, I get identical results when I run

                SELECT title, name
                FROM books JOIN publisher
                USING (pubid)

                and

                SELECT title, name
                FROM books INNER JOIN publisher
                USING (pubid)

                Thanks,

                Neil

                *** Sent via Developersdex http://www.developersdex.com ***

                Comment

                • DeanGC

                  #9
                  Re: difference between explicit inner join and implicit

                  On Apr 12, 7:22 pm, Neil H <trumbol...@yah oo.comwrote:
                  If anyone is willing to help a novice,
                  >
                  is there any difference between the JOIN operator and the INNER JOIN
                  operator?
                  >
                  For example, in a sample database, I get identical results when I run
                  >
                  SELECT title, name
                  FROM books JOIN publisher
                  USING (pubid)
                  >
                  and
                  >
                  SELECT title, name
                  FROM books INNER JOIN publisher
                  USING (pubid)
                  No, there is no difference. They are the same. 'INNER' is optional:
                  the default JOIN is INNER JOIN.

                  Whether you write INNER or not is a matter of style.

                  Comment

                  • Erland Sommarskog

                    #10
                    Re: difference between explicit inner join and implicit

                    Neil H (trumbology@yah oo.com) writes:
                    If anyone is willing to help a novice,
                    >
                    is there any difference between the JOIN operator and the INNER JOIN
                    operator?
                    >
                    For example, in a sample database, I get identical results when I run
                    >
                    SELECT title, name
                    FROM books JOIN publisher
                    USING (pubid)
                    >
                    and
                    >
                    SELECT title, name
                    FROM books INNER JOIN publisher
                    USING (pubid)
                    No, "JOIN" is just short for "INNER JOIN".

                    However, the USING syntax does not appear in MS SQL Server (which is the
                    topic for this newsgroup), so you seem be using a different product.

                    --
                    Erland Sommarskog, SQL Server MVP, esquel@sommarsk og.se

                    Books Online for SQL Server 2005 at

                    Books Online for SQL Server 2000 at

                    Comment

                    • --CELKO--

                      #11
                      Re: difference between explicit inner join and implicit

                      INNER is a shorthand for INNER JOIN, and USING is a shorthand for an
                      equi-join. Nobody really likes USING, since adding more tables and re-
                      compiling can give you surprises.

                      Comment

                      • Shuurai

                        #12
                        Re: difference between explicit inner join and implicit

                        Technically no, but it's a good idea to make it a habit to use the explicit inner join.  It is considered the standard nowadays, <<
                        >
                        Not when I was on the Standards Committee; did you join later than
                        me?
                        The INNER JOIN syntax is the current standard. It is considered
                        "standard" by those who actually work in the field. How long ago was
                        it that you were on the Standards Committee?

                        You seriously need to stop pulling this "I was on the committee" crap
                        in place of having a valid argument. The fact of the matter is, the
                        vast majority of us are using the INNER JOIN syntax. If you feel like
                        doing things the old way, whatever.
                        is easier to read and debug, <<
                        >
                        NO, it isn't; have you seen any of the human factors research?  
                        YES, it is. That is one of the main reasons why people who actually
                        work in the field have so widely adopted it. But just for fun, why
                        don't you post a link to the research that shows that the syntax
                        practically *everyone* has adopted with open arms is so much worse
                        than the syntax we all (just as willingly) dropped.
                        The ON clauses can be spread so far from the matching tables debugging time
                        increases.  Multiple parameter predicates like BETWEEN and IN are
                        split and their higher level meaning is lost.
                        Debugging time is actually diminished because the join criteria is not
                        mixed in with the filtering criteria. If you find yourself "losing"
                        predicates then maybe the problem is with you and not the syntax.
                        But it looks like ACCESS and has a nice binary operator feel that
                        procedural programmers like.
                        I could care less what looks like ACCESS. I don't personally use
                        ACCESS; have never been a fan.
                        and is consistent with the OUTER JOIN syntax. <<
                        >
                        Yes, that is the reason it exists.
                        Whatever the reason, the fact is it is currently the accepted industry
                        standard. If you do not realize/understand this, that is your issue.

                        Comment

                        Working...