Я думаю, что правильное внешнее соединение исправит это, но - PullRequest
2 голосов
/ 19 июня 2011

Я новичок в SQL, но достаточно склонен, чтобы попасть в неприятности.

У меня есть таблица под названием Sales, содержащая, естественно, поля, относящиеся к продаже, включая поле с названием Salesman.

Я такжеесть еще одна таблица под названием «Продавцы», содержащая только имена продавцов.

Мне нужен отчет, который подсчитывает все продажи для каждого продавца, включая результат для каждого продавца, который не упомянут в таблице «Продажи» из-за отсутствия продаж.

Следующий код работает, за исключением того, что неработающий продавец не показывает, только те, кто действительно что-то продал.

SELECT salesman,
       count(*) as nmbr
  FROM Sales
        JOIN Salesmen
              ON Sales.salesman = Salesmen.name
 GROUP BY Salesmen.name
 order by nmbr;

Я полагаю, что правильное внешнее объединение исправит это, за исключением того, что я используюSQLITE, который не позволяет этого.

Есть какие-нибудь идеи об обходном пути, чтобы я мог узнать, какой продавец ничего не продал?

Ответы [ 2 ]

5 голосов
/ 19 июня 2011

Поддерживает ли SQLLite внешнее соединение влево?

 SELECT salesmen.name
        count(sales.salesman) as nmbr
 FROM Salesmen
    LEFT JOIN Sales ON Sales.salesman = Salesmen.name
 GROUP BY Salesmen.name
 ORDER BY nmbr;
2 голосов
/ 19 июня 2011

В соответствии с SQLite , вы можете выполнить ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ, но не ПРЯМОЕ НАРУЖНОЕ СОЕДИНЕНИЕ.Так как насчет простого изменения порядка таблиц в вашем запросе и выполнения LEFTy?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...