I recommend using 1st syntax. Its do nicely code for after updates. 2nd syntax is really old and cannot prefer this because join all result from tables and after filter data. Maybe I'm wrong but i think so if you have a indexes and PK, you can get more performance with joins because SQL server can provide better support for this operation (such as sorting, filtering, subquery...etc). Where clause is for filtering your data final result.
JOINS are very powerfull tool because you can join only just filtered data if you want and not join all tables results. May be better for RAM or Cache.
1st - you can adding just filtered data as shown syntax below
SELECT A., B.
FROM table_a as A
INNER JOIN table_B as B ON B.id = A.id -- join table b
AND B.name = 'bob' AND B.active = 1 -- lets filter more and return only rows for clause
- next syntax shown subquery which you can also use, it join ONLY filtered rows and return ONLY specific columns of that table
SELECT a., b., c.flag
FROM table_a as a
INNER JOIN table_B as b ON b.id = a.id -- join table b
AND b.name = 'bob' AND b.active = 1 -- lets filter more and return only rows for clause
INNER JOIN (
SELECT id, flag
FROM table_C
WHERE active = 1
) as c ON c.id = a.id
Its a simple and more read and easy to maintain of code in future.
Look at this link, its isn't beautifull code?
http://www.dpriver.com/products/sqlpp/sqlexamples4.php
Than have x condition in WHERE clause ... ofc you can't use agregate and subquery here ... i recommend learn more about joins and you'll be happy programmer =]
http://www.w3schools.com/sql/sql_join.asp
hope helps