Hierarchical SQL Queries: Databases for Developers #16

Sdílet
Vložit
  • čas přidán 22. 06. 2018
  • Often data contains a parent-child relationship between rows in the same table. For example, company org charts and family trees.
    You can use the power of SQL to traverse these hierarchical relationships. There are two ways to do this in Oracle Database:
    - Connect By
    - Recursive With
    Watch this video to learn about data trees and find out how these work!
    Further reading:
    Hierarchical queries in the docs: docs.oracle.com/en/database/o...
    Recursive subquery factoring in 11.2: oracle-base.com/articles/11g/...
    Take the course! devgym.oracle.com/pls/apex/dg...
    Need help with SQL? Ask us over on AskTOM: asktom.oracle.com
    Twitter: / chrisrsaxon
    Daily SQL Twitter tips: / sqldaily
    All Things SQL blog: blogs.oracle.com/sql/
    ============================
    The Magic of SQL with Chris Saxon
    Copyright © 2015 Oracle and/or its affiliates. Oracle is a registered trademark of Oracle and/or its affiliates. All rights reserved. Other names may be registered trademarks of their respective owners. Oracle disclaims any warranties or representations as to the accuracy or completeness of this recording, demonstration, and/or written materials (the “Materials”). The Materials are provided “as is” without any warranty of any kind, either express or implied, including without limitation warranties or merchantability, fitness for a particular purpose, and non-infringement.
  • Věda a technologie

Komentáře • 44

  • @edgards
    @edgards Před 5 lety +12

    Fantastic video!! it's 8pm here at my office and I'm dancing because this function has helped me a lot.

  • @phamucmanh1750
    @phamucmanh1750 Před 3 lety +2

    So amazing ! Keep producing videos, please. Thank you !

  • @Samalbabu1
    @Samalbabu1 Před 4 lety +3

    No where on web I found such helpful fundamental description on hierarchy..!! Thank you 😊

  • @cavin3401
    @cavin3401 Před 3 lety +1

    Snowden is now teaching SQL seems FUN

  • @shashankjain2270
    @shashankjain2270 Před 2 lety

    Great Video!, Helped me understand the concept .

  • @jaiwr9460
    @jaiwr9460 Před 3 lety +1

    i love the effort

  • @mohammadalijavaheri771

    thank you for this video

  • @CalvinYio
    @CalvinYio Před 2 lety +1

    just made reading a while wall of text easier but is there any tutorial or exercise i can practise this with?

    • @TheMagicofSQL
      @TheMagicofSQL  Před 2 lety +1

      You can find an interactive tutorial at livesql.oracle.com/apex/livesql/file/tutorial_GQMLEEPG5ARVSIFGQRD3SES92.html

  • @aggreyafray6869
    @aggreyafray6869 Před 5 lety +1

    hi just inquiry can i use those functions in mysql and php?

    • @TheMagicofSQL
      @TheMagicofSQL  Před 5 lety +1

      MySQL does support recursive with/CTEs. I'm not sure if/how it covers all the features discussed here though.

  • @mario17-t34
    @mario17-t34 Před 4 lety

    Thanks much, So this is for Oracle, I think something similar can be done on MS? (and without music-) Thanks much

    • @TheMagicofSQL
      @TheMagicofSQL  Před 4 lety

      Connect by is specific to Oracle Database; I imagine recursive with works on MS, but I don't know the details
      You have to listen to music whichever database you use ;)

  • @DavidLeiser88
    @DavidLeiser88 Před 4 lety

    What to do if you dont know the root? Can this be done in the same statement or should this be done in a seperate querry?

    • @TheMagicofSQL
      @TheMagicofSQL  Před 4 lety +1

      You can use a subquery to identify the root row(s). This works for connect by (start with col in ( select ... ) ) and the base query in recursive with.

  • @jallunick1032
    @jallunick1032 Před rokem

    Where can I find the sql queries shown in this video?

    • @TheMagicofSQL
      @TheMagicofSQL  Před rokem

      You can join the courses at
      devgym.oracle.com/pls/apex/dg/class/databases-for-developers-foundations.html
      devgym.oracle.com/pls/apex/dg/class/databases-for-developers-next-level.html

  • @ashutoshshrivastava9663

    What about Binary.

  • @jeandedieuntirampeba8817

    WHAT CAN I DO WITH MYSQL WHEN I WANT TO RESOLVE THE PROBLEM LIKE THAT?

    • @TheMagicofSQL
      @TheMagicofSQL  Před 4 lety

      I focus on Oracle Database here, so I'm not sure; sorry!

  • @AndiRadyKurniawan
    @AndiRadyKurniawan Před 3 lety

    Is the hierachical query faster than the nested set model?

    • @TheMagicofSQL
      @TheMagicofSQL  Před 3 lety

      I'm not familiar with the nested set model - could you clarify what this is?

    • @AndiRadyKurniawan
      @AndiRadyKurniawan Před 3 lety

      @@TheMagicofSQL it's a way to manage hierarchical data where a separate table is used to store the boundaries of the node in the tree. You perform the query on this separate table instead of the actual table. See en.wikipedia.org/wiki/Nested_set_model

    • @TheMagicofSQL
      @TheMagicofSQL  Před 3 lety +1

      Gotcha. It really depends on the query you're running. If you need to traverse the tree, I suspect connect by/recursive with will be faster. It really comes down to the data and your query though

  • @bostonmacosx
    @bostonmacosx Před 3 lety

    Ok...why in the recursive with do you have a "yf." there is no alias refereing to a yf table...

    • @TheMagicofSQL
      @TheMagicofSQL  Před 3 lety

      You mean here? czcams.com/video/pB_nOIk3mmY/video.html
      It's on the join to your_family yf in the second block of the union all

    • @bostonmacosx
      @bostonmacosx Před 3 lety

      @@TheMagicofSQL Yeah it was a bit off the screen..but I see it now....
      My only question is can you look up the tree as well as down so if I select a middle of hte road tree item can I still see the whole tree or do I always need to start at the root..

    • @TheMagicofSQL
      @TheMagicofSQL  Před 3 lety +1

      You can go up or down the tree, just flip the tables in the join criteria.
      If you're asking if you can go up AND down in one query... yes it's possible. You need to do both the joins in both directions and have cycle detection. Here's a connect by example:
      with rws as (
      select level x, lag ( level ) over ( order by level ) y
      from dual
      connect by level

  • @atulgupta9301
    @atulgupta9301 Před 4 lety

    Not able to understand the syntax.

  • @neeleshshah
    @neeleshshah Před rokem

    Oh.. to take care of divorces, re marriages, children from multiple marriages.. and… shocker.. marriages of cousins (at a broad 4th/5th level).. i had to patch up the data model.. !!

  • @dummuvikash4957
    @dummuvikash4957 Před 2 lety

  • @samt1705
    @samt1705 Před 3 lety +1

    The background music needs to be changed.

  • @wiktor1983
    @wiktor1983 Před rokem

    "But, of course, in real life everyone has two parents" In 2022 is not so obvious...

  • @KirillBezzubkine
    @KirillBezzubkine Před 4 lety +2

    Video s good but this damn stupid BG music is really distracting

  • @JustBCWi
    @JustBCWi Před 3 lety +1

    Thumbed down, misleading title. This is "Oracle Databases" for developers

  • @enockoloo3814
    @enockoloo3814 Před 2 lety

    too much illustration is distracting and annoying.