2016-06-06 3 views
2

Так что если я задал следующий вопрос:Зачем использовать JOIN в SQL и когда его использовать?

Написать SQL заявление, чтобы найти список клиентов, которые назначили торговец за свои рабочие места, которые получают комиссию от компании составляет более 12%

Столов : клиент

customer_id cust_name  city  grade  salesman_id 
----------- ------------ ---------- ---------- ----------- 
3002   Nick Rimando New York 100   5001 
3005   Graham Zusi California 200   5002 
3001   Brad Guzan London  100   5005 
3004   Fabian Johns Paris  300   5006 
3007   Brad Davis New York 200   5001 
3009   Geoff Camero Berlin  100   5003 
3008   Julian Green London  300   5002 
3003   Jozy Altidor Moncow  200   5007 

продавец

salesman_id name  city  commission 
----------- ---------- ---------- ---------- 
5001   James Hoog New York 0.15 
5002   Nail Knite Paris  0.13 
5005   Pit Alex London  0.11 
5006   Mc Lyon  Paris  0.14 
5003   Lauson Hen San Jose 0.12 
5007   Paul Adam Rome  0.13 

есть ли разные betw een следующие способы сделать это? Если да, то в чем разница? Поскольку конечный результат тот же

Если оба варианта одинаковы, зачем использовать предложение INNER JOIN? швы трудно мне, что первое решение

select customer.cust_name, salesman.name, salesman.commission 
from customer, salesman 
where salesman.commission > 0.12 and customer.salesman_id = salesman.salesman_id 

-

select customer.cust_name, salesman.name, salesman.commission 
from customer INNER JOIN 
    salesman 
    ON customer.salesman_id = salesman.salesman_id 
where salesman.commission > 0.12 

Спасибо большое

+0

'ВНУТРЕННИЙ JOIN' правильный способ записи запроса. Простое правило: * Никогда * не используйте запятые в предложении 'FROM'. –

+0

@GordonLinoff Не могли бы вы объяснить, почему, что случилось с его первым примером? –

+0

@ GordonLinoff да, не могли бы вы объяснить, почему. Я вижу это таким образом во многих сайтах и ​​руководствах по SQL. –

ответ

0

«более трудным» решение является тот, который вы не привыкли. В наши дни большая часть мира использует INNER JOIN, поэтому, если вы хотите написать код, который будет более универсальным для других программистов, вы должны использовать INNER JOIN

0

Вы не указываете, какую платформу базы данных вы запрашиваете, но для MS SQL Server по крайней мере первая форма, неявное соединение, устарела. Например, см:

https://msdn.microsoft.com/en-us/library/dd172122(v=vs.100).aspx

http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx

Для меня лично явно присоединяется легче читать и писать.

Кроме того, поскольку это устаревший синтаксис, мудрая вещь, которую нужно сделать, это привыкнуть к неявным соединениям сейчас, поскольку более новые версии SQL Server не будут поддерживать старый синтаксис.

+0

Вот сайт, который я использую, чтобы получить некоторые упражнения и некоторое обучение, и они так же, как они запрашивают несколько таблиц без JOIN: [Сайт] (http: /www.w3resource.com/sql-exercises/sql-exercises-quering-on-multiple-table.php) –

+0

Любая рекомендация сайта, где можно практиковать SQL –

0

Результат тот же, потому что запросы по существу совпадают, так как разница является чисто нотной, когда указание типа объединений (внутреннего соединения) в этом уходе четко указывает на то, какое отношение существует между таблицей.

Применение в отношении explict предпочтительнее .. и CONFOR к самым стандартным рекомендациям использовать в SQL raccomendation