Self Join in SQL

Поділитися
Вставка
  • Опубліковано 24 лип 2024
  • 📝 Get my free SQL Cheat Sheets: www.databasestar.com/get-sql-...
    🎓 Learn and become confident in SQL: databasestar.mykajabi.com/sql...
    A self join in SQL is where you write a query on one table that joins to the same table a second time. It's used when you have a record in the table that refers to another record in the same table.
    A common example is employees and managers, or product categories. Anything with a "hierarchical data" setup may use an SQL self join.
    This video shows you what an SQL self join is, how to write one, and how to overcome issues with column names and missing data.
    You can find out more about joins overall in this guide here: www.databasestar.com/sql-joins/
    If you want more database training, practice questions, and guides, enroll in Database Star Academy here: www.databasestar.com/dsa/
    If you have any suggestions for other videos or comments on this one, let me know in the comments below.
    Timestamps:
    00:00 Introduction
    00:12 Self Join definition
    01:38 Employee solution
    06:03 Final query
    06:45 Categories example
    07:30 Left Join
  • Наука та технологія

КОМЕНТАРІ • 113

  • @yawenxue2963
    @yawenxue2963 3 роки тому +17

    I like how you talk :quiet and clear

  • @Moon22m
    @Moon22m Місяць тому +2

    Thank you so much! I was trying to understand the ON statement in SELF JOINS and you've explained it perfectly.

  • @preciouschinenyenwa8490
    @preciouschinenyenwa8490 4 місяці тому +1

    Thank you, I was struggling to understand self join, but after watching your video, I realised how simple it is.

  • @mdimranhussain171
    @mdimranhussain171 Рік тому +2

    got here from a course i couldnt understand this self join and Thanks to you it's all clear now. you explained it really well with the perfect examples. Keep up

  • @elioko3639
    @elioko3639 2 роки тому +17

    Definitely needed this and you explained it perfectly

  • @joel-rg8xm
    @joel-rg8xm Рік тому +2

    Man! That CATEGORIES example saved me just in time before creating many tables. Thanks

  • @Kartik-vj5os
    @Kartik-vj5os 2 роки тому +1

    Even after a year you are helping guys like me! Thanks for clearing my doubt

  • @kpamiose
    @kpamiose 2 роки тому +4

    Thanks for breaking this down so simply.

  • @Kornackifs
    @Kornackifs 7 місяців тому +1

    I struggled with an intermediate leetcode sql problem
    I didn't want to see the solution right away so i started searchin on sql topics to full the knowledge gap but what i found is actually a video solving the problem itself fuck me

    • @DatabaseStar
      @DatabaseStar  6 місяців тому

      Oh is that a good thing or a bad thing?

    • @Kornackifs
      @Kornackifs 6 місяців тому

      @@DatabaseStar
      I don't maybe I should've solved it on my own 😥

  • @astorgadexterpelaez3502
    @astorgadexterpelaez3502 10 місяців тому

    thank you! been lurking in your channel for a while now, great content sir!

  • @metaman8662
    @metaman8662 7 місяців тому +1

    I'm thankful I found this video your explanation is what I needed!

  • @kim-ex5cn
    @kim-ex5cn Рік тому

    THANK YOU. i have read a hundred tutorials and was stuck on the alias. starting with the from and on clauses and explaining the AS is implied and then going back to the select cracked things open for me. much appreciated.

    • @DatabaseStar
      @DatabaseStar  Рік тому +1

      Thanks for the kind words! I’m glad this video helped you understand it.

  • @user-xs3kf9tx1m
    @user-xs3kf9tx1m Рік тому

    Huge thanks for such a clear explanation! Helped a lot!

  • @thanzeeljalaldeen
    @thanzeeljalaldeen 2 роки тому +1

    somethething that i needed currently for my project. thanks a lot sir

  • @OberynPinkViper
    @OberynPinkViper Рік тому

    Thank you for the clear and simple explanation. I remembered seeing the Employee - Manager example somewhere a few years ago, but I couldn't recall where exactly I saw it.

  • @quynhanhnguyenthi1686
    @quynhanhnguyenthi1686 2 роки тому +2

    Thank you so much for this clear explanation

  • @slimandahra4294
    @slimandahra4294 2 роки тому +1

    your explaining is great thank u..and good luck

  • @BronProject
    @BronProject 2 роки тому +1

    Thank you for this!

  • @Eyenn_n
    @Eyenn_n Рік тому

    Great content! Awesome channel!

  • @ZenonMcRae
    @ZenonMcRae 2 роки тому +1

    Nice & clear

  • @kumruorkun3947
    @kumruorkun3947 Рік тому

    Very clean, thank you

  • @TK-ko3fg
    @TK-ko3fg 11 місяців тому

    King of SQL explanation

  • @shriefabdelaziz4280
    @shriefabdelaziz4280 Місяць тому +1

    wow amazing explanation thanks!!

  • @hyperborean72
    @hyperborean72 2 місяці тому

    lovely example

  • @oscarpalomares8282
    @oscarpalomares8282 Рік тому

    Great explanation!

  • @dhruvitmodi3043
    @dhruvitmodi3043 5 місяців тому

    Nicely explain in simple terms...checked many of your videos too... I am being SQL developer, liked your work 👍

    • @DatabaseStar
      @DatabaseStar  5 місяців тому

      Thanks! Glad you like the videos.

  • @humbertojesustoledovazquez5891
    @humbertojesustoledovazquez5891 2 роки тому

    What a video!!! Thanks :)

  • @lehadypierrengangue4149
    @lehadypierrengangue4149 3 роки тому

    thanks for the content !!

  • @bouslamafathi3581
    @bouslamafathi3581 Рік тому

    Perfect explanation thanks a lot

  • @SonAyoD
    @SonAyoD Місяць тому +1

    Great video

  • @matze489
    @matze489 Місяць тому +1

    really good video

  • @newbeginning3089
    @newbeginning3089 Рік тому

    Thanks. It was 👍

  • @spaaaaace8952
    @spaaaaace8952 Рік тому

    Thank you.

  • @ExcelTutorials1
    @ExcelTutorials1 2 роки тому +2

    This is super helpful! Your voice is almost like listen to ASMR, lol. Nice to listen to

    • @DatabaseStar
      @DatabaseStar  2 роки тому

      Heh thanks- I’ve been working to improve the audio on my recent videos so the older ones may sound softer.

    • @teenytinytoons
      @teenytinytoons 2 роки тому

      It's not almost like, IT IS!!!

  • @michaelchiz8055
    @michaelchiz8055 Рік тому

    Good tutorial

  • @olufemiolawale3848
    @olufemiolawale3848 Рік тому

    Thank you sir

  • @gauravsrivastava17
    @gauravsrivastava17 Місяць тому

    9:05 writing query and making er diagram is so much helpful

  • @rural_world
    @rural_world 5 місяців тому +1

    Perfect

  • @luizetulio4888
    @luizetulio4888 Рік тому

    Great video. Is it possible to use self join and a many to many relationship simultaneously or it would work only for one to many? For example if an employee has 2 or more managers...

    • @DatabaseStar
      @DatabaseStar  Рік тому

      Good question! Yes, that is possible. Another example of using that could be if you want to capture the parents of a person, where each person could have more than one parent.

  • @RoysIdea
    @RoysIdea 8 місяців тому +1

    So how would you expand these queries if you want to order them from top to bottom, with a level or additional spaces?
    So start with Clair (who has no manager), followed by a manager and his/her team, etc. And include a level column.

    • @DatabaseStar
      @DatabaseStar  8 місяців тому

      Good question. It depends on the database vendor, and I've written more about it here: www.databasestar.com/hierarchical-data-sql/

  • @enricoroselino7557
    @enricoroselino7557 Рік тому

    and what if there is a period validity of the structure (include year and month column) ? should i put it on the same table ? is it okay to have duplicate rows of ppl name?

    • @DatabaseStar
      @DatabaseStar  Рік тому

      Good question, I think it's OK to have on the same table.It would then be an additional condition on your join, or in the WHERE clause, to check if a record falls in a certain date range.

  • @chesterliu1929
    @chesterliu1929 2 роки тому +1

    At 6:38, relationship between id and manager_id is one to many which means one manager_id can have multiple employee_id to manage. However the multiple arrow sign is pointing to manager_id which should mean many manager_id can manage one employee_id. I think the arrow should be the opposite way, right?

    • @DatabaseStar
      @DatabaseStar  2 роки тому +1

      Ah yes you're right! The arrow should be the other way around. Thanks for letting me know.

    • @offlinedie
      @offlinedie 2 роки тому +1

      @@DatabaseStar Hi! Sry I think you were correct in the video, Since the foreign key is always on the many side in a EDR. Right?

  • @TheBoysZone
    @TheBoysZone 2 роки тому +2

    This is how you should teach SQL.....step by step

  • @aakash1763
    @aakash1763 Рік тому

    Great explanation just one doubt in the ER diagram for both examples of self join why did you show 1:many relationship?

    • @DatabaseStar
      @DatabaseStar  Рік тому

      Good question! It's because of the way the two concepts or records are related. For example with employees and managers, an employee has one manager, but a manager can have many employees. This is a one-to-many relationship, so I've drawn it that way on the diagram. Hope that helps!

  • @balaji2035
    @balaji2035 7 місяців тому

    hi sir I have one doubt if we specify e.manager_id =m.id it will give the result only the both columns having same values right example manager_id =1 and emp_id also 1 or how does it works can you please clarify my doubt.

    • @DatabaseStar
      @DatabaseStar  7 місяців тому

      Yes, if you match on e.manager_id = m.id it will show employers and their managers, which is correct.

  • @MDARUN-ph1dw
    @MDARUN-ph1dw 3 роки тому

    No wonder why you are calling yourself a database star 🔥🔥🔥🔥😁

    • @DatabaseStar
      @DatabaseStar  3 роки тому

      Thanks! The name is more for my readers and viewers to become "database stars" by learning and improving :)

    • @MDARUN-ph1dw
      @MDARUN-ph1dw 3 роки тому

      @@DatabaseStar 😁😁🔥🔥🔥🔥🔥🔥🙏🏻🙏🏻

  • @osoriomatucurane9511
    @osoriomatucurane9511 7 днів тому

    The concept is easy and straitforwad, but times come you face a question with no clue that the solution comes with self join, unless you are given the schema

  • @trytofindareasonwhy
    @trytofindareasonwhy Місяць тому

    self joins make my brain melt

    • @DatabaseStar
      @DatabaseStar  Місяць тому

      Yes they are a hard concept to understand!

  • @souronion3822
    @souronion3822 6 місяців тому

    It is okay

  • @AmanRaj-zo7bx
    @AmanRaj-zo7bx 6 місяців тому

    in ERD Diagram, id to manager_id relationship is One to Many, which means an employee can have multiple managers but one manager can not have multiple employees !! But it's not the case here, please clarify it.

    • @DatabaseStar
      @DatabaseStar  6 місяців тому +1

      Good point, the employee can only have one manager but the manager can have many employees.

    • @AmanRaj-zo7bx
      @AmanRaj-zo7bx 6 місяців тому

      @@DatabaseStar Thanks for clarification.

  • @gauravsrivastava17
    @gauravsrivastava17 Місяць тому

  • @jaymo2024
    @jaymo2024 Рік тому

    04:45 the ON clause is what you need to know the rest is bloatware

  • @poojamore056
    @poojamore056 7 місяців тому

    Hey, the employee example was good! I waited till end for another example tho.. 🥲

    • @DatabaseStar
      @DatabaseStar  6 місяців тому

      Thanks! Good point, I should have included more examples.

  • @arnosolo2008
    @arnosolo2008 5 місяців тому

    Thank you.