Thank you so much! You are my favorite UA-cam teacher. Your video on normalization saved me in my first SQL class! So glad to see new content. I know these must be incredibly time consuming to make, thank you so much for doing them!
That's very kind! I'm glad the normalization video was of so much help to you. These videos are pretty time-consuming to make, for sure, but I figure once I finish making a video it's there forever, and I can see from the comments that a lot of people are genuinely being helped by them. Which motivates me to continue making them, albeit slowly!
Just over 5 minutes in and I am understand so much better. I have done joins before, but wasn't really able to picture it so it made more sense to me. Thank you.
You have great presentation skills! Thank you so much for what you do. I'm doing a database management course that I've been struggling with and you're normalization video really helped!
Wow, this is absolutely incredible! I gained so much valuable insight from this video, and I truly appreciate the credibility of the information presented. Thank you so much for sharing your knowledge! I also have to mention how pleasant your voice is to listen to-it truly adds an extra layer of enjoyment to the experience!
Thank you so much! I have watched several of your videos now, and they are excellent explanations! I love your animations and your format. I was able to pause the videos, stop and think how I would create the Query, and then continue to see the syntax. This has been so helpful. I hope you continue to make new content. I will be eager to see it!
Such a well prepared explanation 👍. This makes me not to rely on just "pattern recognition" to do database stuff, but has an actual sequence of logical thinking behind it that i finally understand from your videos
Thank you! I love the explanation in simple examples If I can suggest one topic it would be the one you alluded to in the denormalization video about things we can do for processing layer optimization: sharding, indexes, and statistics
I am a total stranger to databases in any professional/formal context, even though I have engaged in what I now (after watching your videos) realize was table normalization a couple of times, e.g. while using Dataview in Obsidian, or Notion. After watching this video in particular, it occurred to me that those massive Excel spreadsheets, which some companies base their entire operations on, seem strikingly similar to SQL-based databases with all the JOINs, WHEREs and whatnot. But anyway, I wanted to thank you for all the excellent videos with clear explanations, helpful examples and great visuals. Really looking forward for the video(s) about the 4th&5th Normal Forms :)
thank you for your explanations, they are really great and very helpful. Hope, that you will have a time for new videos. For me will be interesting to see topics like transactions or indexes, or even about executions plans
Thanks for the great video (again). I have two suggestions. - recursive sql requests (e.g. for hierarchies as employee->boss(also an employee)->boss… and - a join, where I only get one result from the rigt table matched with a condition like min/max/latest (e.g. a gamer joined to (only) the latest purchase he did). Maybe these are to small topics, but maybe they can find a place inside a bigger one. These are often situations that seem to be easier, than they actually are. Thanks for the good content!
Learned a LOT from all your videos!! If you don't mind, how do you make these videos? What video editing software are you using? I find it super cool and simple. Thank you!
Inner join questions: why do you query that way? I mean Why do you join and then filter, but not get letter of Hydrogen, then filter it from compound details and then query the data only for rows that you interested in? I mean why you do not use natural for manual search algorithm? Whan downsides of that approach?
An SQL query is just a question that we want the database platform to answer for us. The database platform decides what strategy/algorithms to use internally to come up with the answer - all database platforms have "optimizers" which choose the most efficient strategy/algorithms to use internally to answer a particular query. It's pretty likely that in this case, a query optimizer will use a strategy like what you are suggesting. But just remember: an SQL query doesn't prescribe HOW to answer a question. An SQL query IS the question.
@@decomplexify Oh my God! I just had a revelation thanks to you: query = question. So SQL is actually the a way of how to properly ask questions. How on earth that escaped me...? I have always thought that it was just forging your way to the answer, whereas the system is building that for you, you just ask. Thank you so very much!
thanks a lot for such great explanation, but am just confused a bit on self join , specifically on the ON clause , why not use " ap.Approver_Employee_Number = e.Employee_Number" , why are they not interchangeable?
Glad the video was helpful! Re your question: It's easiest if you imagine that the two copies of the Employee table that we're making use of in this query are literally two different tables. One table is called "ap". "ap" is an approver table: every row within the "ap" table represents an approver. The other table is called "e". Every row within the "e" table represents an employee. Now, to your question 'Why not use "ap.Approver_Employee_Number = e.Employee_Number", the first thing to notice here is that "ap.Approver_Employee_Number" refers to the Approver_Employee_Number on the "ap" table. As mentioned above, every row within the "ap" table represents an approver. So ap.Approver_Employee_Number represents the approver of the approver! That's not what we're interested in. We're not interested in the approver of the approver. What we're actually interested in is the employee's approver (e.Approver_Employee_Number), which is why e.Approver_Employee_Number is what appears in the join.
Decomplexify: we bring simplicity to complex topics Also Decomplexify literally 1 second later: suppose we have a database with chemical compounds and their elements ☠️
More sql topics to be simplified: 1. Subqueries and its types. 2. Common Table Expressions 3. Recursive CTEs 4. Date-Time Manipulation 5. Stored Procedures 6. Windowing Functions Please see if you can also help with above topics.
SELECT c.compund_name, c.compund_id FROM compund c JOIN compund_element_detail ced USING compound_id --Or (ON c.compund_id = ced.compound_id) WHERE ced.element_symbol = 'H'
would this not work? This is what I came up with before the video showed its answer. I guess I don't understand why the 3rd table 'Element' needs to be joined. Trying to get better at thinking through this so any help is appreciated
in the instruction you were changing the names of tables but not using the "as" is there any special way to do this or just giving the new name at the end of the query?
Great video but your deduction logic in the elemt tables is wrong, you start "knowing" that Hidrogen is represented by the leter H, but you can't asume this, you should do the folowing: Look at the element table and check what element symbol represent the hidrogen and the go to compound element detail to check element symbol vs compound id and with that go to the compound table
the last result table is wrong as there is not match for 3 ,4,5 in approver_emp_number so the result should contain only 3 rows where they match please tell i am wrong i am looking at for hour trying to know why
Take each row in the table, look at its Approver Employee Number (call it n), then find a row in the Employee table whose Employee Number is n. That's the matching that this join is doing.
@@YoussefAdelZinIf you did that, the query would still return 6 rows, and the headings in the query output would become misleading because "e" is now the approver and "ap" is now a person who gets days off approved by the approver. So the query wouldn't really make sense any more. But it would return 6 rows.
@@decomplexify I understand but it would not contain 2,3,5 it will contain two 1s and three 6s and btw thank you very much for carrying and answering me
Actually it's a great video But I have a little comment that regarding data integrity You violated it at 20:18 When you listed the employees table You assigned the first row with an approver employee Which is not exist while inserting the row I hope you got me
Hi Marawan, thanks for your comment. There are many options available for enforcing foreign key constraints. One of them is to enforce the constraints only when everything inside the transaction has completed. So: imagine that the insertion of all those rows occurs in a single transaction, and the constraint checking occurs after all the inserts complete, allowing the transaction to commit.
@@decomplexify i know broo But really i love your channel You always talk about important stuff Can you make a video about CTE And ER modeling I think it will be great
CONTENTS
0:00 Introduction
0:40 INNER JOINs
9:08 LEFT OUTER JOINs
13:04 RIGHT OUTER JOINs
15:36 FULL OUTER JOINs
17:10 Tailoring the matching criteria
18:40 CROSS JOINs
19:24 Joining a table to itself
21:06 Conclusion
COME BACK
Thank you so much! You are my favorite UA-cam teacher. Your video on normalization saved me in my first SQL class! So glad to see new content.
I know these must be incredibly time consuming to make, thank you so much for doing them!
That's very kind! I'm glad the normalization video was of so much help to you. These videos are pretty time-consuming to make, for sure, but I figure once I finish making a video it's there forever, and I can see from the comments that a lot of people are genuinely being helped by them. Which motivates me to continue making them, albeit slowly!
@@decomplexify The value you provide with these videos is really great!
If I had teachers like you in college, I would become a billionaire by now!
That's a weird analogy ..but ok
@@monikagupta1396 You are weird ..but ok
@@monikagupta1396it's a hypothetical, not an analogy
well you have teachers on youtube like this now, lets get them billions fam!
me only a multimillionaire
Just over 5 minutes in and I am understand so much better. I have done joins before, but wasn't really able to picture it so it made more sense to me. Thank you.
I could literally cry you broke it down perfectly. I was hopelessly confused
You have great presentation skills! Thank you so much for what you do. I'm doing a database management course that I've been struggling with and you're normalization video really helped!
Wow, this is absolutely incredible! I gained so much valuable insight from this video, and I truly appreciate the credibility of the information presented. Thank you so much for sharing your knowledge! I also have to mention how pleasant your voice is to listen to-it truly adds an extra layer of enjoyment to the experience!
Thank you so much! I have watched several of your videos now, and they are excellent explanations! I love your animations and your format. I was able to pause the videos, stop and think how I would create the Query, and then continue to see the syntax.
This has been so helpful. I hope you continue to make new content. I will be eager to see it!
Such a well prepared explanation 👍. This makes me not to rely on just "pattern recognition" to do database stuff, but has an actual sequence of logical thinking behind it that i finally understand from your videos
Loved it! Perfect and concise explaination to a very complex topic
I keep coming back to these videos and learning something new every time!
please continue with this course, you're the best!
I was having hard times understanding joins, thanks for this amazing video it helped me grasp the concept better.
Thank you!
I love the explanation in simple examples
If I can suggest one topic it would be the one you alluded to in the denormalization video about things we can do for processing layer optimization: sharding, indexes, and statistics
I am a total stranger to databases in any professional/formal context, even though I have engaged in what I now (after watching your videos) realize was table normalization a couple of times, e.g. while using Dataview in Obsidian, or Notion.
After watching this video in particular, it occurred to me that those massive Excel spreadsheets, which some companies base their entire operations on, seem strikingly similar to SQL-based databases with all the JOINs, WHEREs and whatnot.
But anyway, I wanted to thank you for all the excellent videos with clear explanations, helpful examples and great visuals. Really looking forward for the video(s) about the 4th&5th Normal Forms :)
I didn't know that we can do self-join. thank you!
We need more database videos. You explain the concepts so well.
these videos are great. please start again...
Why you stopped doing videos. It is very useful for us. The way of explaining is awesome. Please continue the videos.
Your videos are great. Can you do some advanced SQL stuff please like procedural function,triggers etc
Right the time I was looking for Join videos. I met your videos with database normalisation. I think your methodology works best for me. Keep it up!
your videos are really helpful. liked the way you explain the concepts. keep going , looking forward to watch more of your videos.
Great stuff! This tutorial deserves million views.
Such a comprehensive video on joins. You are so underrated. Wish you great number of subs. 🤗
Thank you!
definetly my favorite youtube teacher !!
thank you for your explanations, they are really great and very helpful. Hope, that you will have a time for new videos. For me will be interesting to see topics like transactions or indexes, or even about executions plans
Thanks for the great video (again).
I have two suggestions.
- recursive sql requests (e.g. for hierarchies as employee->boss(also an employee)->boss…
and
- a join, where I only get one result from the rigt table matched with a condition like min/max/latest (e.g. a gamer joined to (only) the latest purchase he did).
Maybe these are to small topics, but maybe they can find a place inside a bigger one. These are often situations that seem to be easier, than they actually are.
Thanks for the good content!
Your videos are truly awesome, thank you for making them
I want to approve my days off maself like Olivia does. Btw the video is lit 🔥
Please keep it up! You will have a large subscriber base if you do!
Thanks for the video, it explains very clearly a difficult concept
This is top notch quality. Loved it
Pretty clean explanation , thanks for your efforts .
Please, explain relationships! 1-N, N-N, etc. Thanks for everthing!
Great video, thanks! Will you make more?
Eventually, yes!
Can you start uploading videos again ? I love them
Amazing Video! Keep making more on databases!
Amazing - hope you find some free time and pump out more videos cause this stuff rocks!
Learned a LOT from all your videos!! If you don't mind, how do you make these videos? What video editing software are you using? I find it super cool and simple. Thank you!
Thanks! I use Videoscribe.
thank you so much, this is extremely well explained and useful
Wish you had more to come in the near future!!
Also might seems unrelated but what is the handwritten font you're using? looks amazing!
I'll try and make more videos when I have some free time! Thanks, the font is called Kalam.
@@decomplexify Much appreciated
Great video, Thank you. Could you do a video on Subqueries and CTEs (With Clause)
Just what i needed to learn, Thank you !! !
you are amazing
Love your videos ❤
It will be grateful if you can make videos on indexing, partitioning, sharding, cap, etc.
Your videos are wonderful, thank you 💗
Nice! keep going sir, we need subqueries as well
MORE VIDEOS PLEASE!
I liked ur video with both my accounts, so make more of em
Thank you so much for making this content
Great video!
Thanks!
more please, thank you!
thanks so much for sharing your wisdom!
thanks a lot
you clear out a lot of things : )
Can you please make video on subnetting?
Keep up the good works!
Can you decomplixify object oriented programming and design patterns? Thank you!
,HI, why you are not uploading any new content anymore? I found your videos very very useful, please keep creating great content, thanks
Hi,
Please could you do a video on Star schemas and fact and dimensions tables 🙏
Inner join questions: why do you query that way?
I mean Why do you join and then filter, but not get letter of Hydrogen, then filter it from compound details and then query the data only for rows that you interested in? I mean why you do not use natural for manual search algorithm? Whan downsides of that approach?
An SQL query is just a question that we want the database platform to answer for us. The database platform decides what strategy/algorithms to use internally to come up with the answer - all database platforms have "optimizers" which choose the most efficient strategy/algorithms to use internally to answer a particular query. It's pretty likely that in this case, a query optimizer will use a strategy like what you are suggesting. But just remember: an SQL query doesn't prescribe HOW to answer a question. An SQL query IS the question.
@@decomplexify this explanation is an eye opener for me, thank you
@@decomplexify Oh my God! I just had a revelation thanks to you: query = question. So SQL is actually the a way of how to properly ask questions. How on earth that escaped me...? I have always thought that it was just forging your way to the answer, whereas the system is building that for you, you just ask. Thank you so very much!
thanks a lot for such great explanation, but am just confused a bit on self join , specifically on the ON clause , why not use " ap.Approver_Employee_Number = e.Employee_Number" , why are they not interchangeable?
Glad the video was helpful! Re your question: It's easiest if you imagine that the two copies of the Employee table that we're making use of in this query are literally two different tables.
One table is called "ap". "ap" is an approver table: every row within the "ap" table represents an approver.
The other table is called "e". Every row within the "e" table represents an employee.
Now, to your question 'Why not use "ap.Approver_Employee_Number = e.Employee_Number", the first thing to notice here is that "ap.Approver_Employee_Number" refers to the Approver_Employee_Number on the "ap" table. As mentioned above, every row within the "ap" table represents an approver. So ap.Approver_Employee_Number represents the approver of the approver!
That's not what we're interested in. We're not interested in the approver of the approver.
What we're actually interested in is the employee's approver (e.Approver_Employee_Number), which is why e.Approver_Employee_Number is what appears in the join.
Fantastic
Decomplexify: we bring simplicity to complex topics
Also Decomplexify literally 1 second later: suppose we have a database with chemical compounds and their elements ☠️
Yes, I thought the same thing. He could have definitely made the tables much simpler.
Thank you a lot!
More sql topics to be simplified:
1. Subqueries and its types.
2. Common Table Expressions
3. Recursive CTEs
4. Date-Time Manipulation
5. Stored Procedures
6. Windowing Functions
Please see if you can also help with above topics.
HUGE thanks❤
Thank you!
Thank you
Super
THank you
what do you use for this handwriting animation please tell me
I use Videoscribe.
SELECT c.compund_name, c.compund_id
FROM compund c
JOIN compund_element_detail ced
USING compound_id --Or (ON c.compund_id = ced.compound_id)
WHERE ced.element_symbol = 'H'
would this not work? This is what I came up with before the video showed its answer. I guess I don't understand why the 3rd table 'Element' needs to be joined. Trying to get better at thinking through this so any help is appreciated
It's probably because the question asks for "Hydrogen", should work on reading questions fully lol
in the instruction you were changing the names of tables but not using the "as" is there any special way to do this or just giving the new name at the end of the query?
Just wow
Where did you go?
pls come back
we need window function on sql
i kow that you read comments.. just wanted to know why you stopped. i am a aspiring data analyst. pls help teach it. thanks
I hope it's not the last video
Great video but your deduction logic in the elemt tables is wrong, you start "knowing" that Hidrogen is represented by the leter H, but you can't asume this, you should do the folowing: Look at the element table and check what element symbol represent the hidrogen and the go to compound element detail to check element symbol vs compound id and with that go to the compound table
i have some problem in last portion
the last result table is wrong as there is not match for 3 ,4,5 in approver_emp_number so the result should contain only 3 rows where they match please tell i am wrong i am looking at for hour trying to know why
Take each row in the table, look at its Approver Employee Number (call it n), then find a row in the Employee table whose Employee Number is n. That's the matching that this join is doing.
@@decomplexify thanks so much but would I be right if we mixed it to be E.employee = AP.aprovel right
@@YoussefAdelZinIf you did that, the query would still return 6 rows, and the headings in the query output would become misleading because "e" is now the approver and "ap" is now a person who gets days off approved by the approver. So the query wouldn't really make sense any more. But it would return 6 rows.
@@decomplexify I understand but it would not contain 2,3,5 it will contain two 1s and three 6s and btw thank you very much for carrying and answering me
Actually it's a great video
But I have a little comment that regarding data integrity
You violated it at 20:18
When you listed the employees table
You assigned the first row with an approver employee
Which is not exist while inserting the row
I hope you got me
Hi Marawan, thanks for your comment. There are many options available for enforcing foreign key constraints. One of them is to enforce the constraints only when everything inside the transaction has completed. So: imagine that the insertion of all those rows occurs in a single transaction, and the constraint checking occurs after all the inserts complete, allowing the transaction to commit.
@@decomplexify i know broo
But really i love your channel
You always talk about important stuff
Can you make a video about CTE
And ER modeling
I think it will be great
@@marawanlotfy1477 Thanks! I've been thinking about perhaps doing an ER modelling video at some point.
MAKE MORE VIDEOS
BRO WTF HOW YOU GET 40K SUBSCRIBERS ON JUST 7 VIDEOS MY MAN
dude, you really overcomplicated this topic...
He did so by using chemical compounds and their elements as table examples.
why did u stop uploading?
Haven't had time to make videos lately, but I will resume at some point.