проблема в том, что вы пытаетесь получить доступ к таблицам, которые вы не сказали, что запрос о в обоих ваших WHERE
и SELECT
статей , Когда вы скажете Bill.BillID
в своем предложении SELECT
, вы говорите, что хотите поле BillID
из таблицы Bill
.
Правило ваш синтаксис нарушения в том, что вы не можете использовать имя таблицы в SELECT
или WHERE
статей, если вы не упоминали в статье FROM
(или JOIN
).
Итак, давайте рассмотрим ваш запрос.
SELECT Bill.BillID, Duty.TaskTime
FROM Invoice
LEFT OUTER JOIN Duty.JobID = Bill.JobID
WHERE Job.CustomerID = Customer.CustomerID
Это означает, что вы хотите, чтобы выбрать поля из таблиц, названных Bill
и Duty
и фильтровать результаты, основанные на поля из таблиц Job
и Customer
. Однако вы упоминали только одну таблицу по имени в предложении FROM
(Invoice
). У вас почти присоединился к столу Duty
, но вы присоединяетесь к нему в месте, где вы еще не указали (Bill
). Я собираюсь угадать, что вы намерены использовать Bill
как псевдоним для Invoice
. Это означало бы, что то, что вы действительно хотите больше похож:
// Still incorrect
SELECT Bill.BillID, Duty.TaskTime
FROM Invoice AS Bill
LEFT OUTER JOIN Duty ON Duty.JobID = Bill.JobID
WHERE Job.CustomerID = Customer.CustomerID
Но мы до сих пор не упоминается либо Job
или Customer
таблицы, на которые ссылаются в пункте WHERE
. Чтобы использовать их, вам нужно также JOIN
этих таблиц. Нам нужно узнать больше о вашей схеме, чтобы выяснить, как это сделать, но могу вам сказать, что вам понадобится в наименее еще две статьи JOIN
. Предполагая, что у вас есть поле CustomerID
в таблице Invoice
, мы, вероятно, захотим присоединиться к этому.
// speculative
SELECT Bill.BillID, Duty.TaskTime
FROM Invoice AS Bill
LEFT OUTER JOIN Duty ON Duty.JobID = Bill.JobID
JOIN Customer ON Customer.CustomerID = Bill.CustomerID
JOIN Job ON // Well, something...We don't know.
Я сильно рекомендую потратить некоторое время на чтение и изучение отличной Wikipedia entry on SQL JOINs. Удачи ~
Я думаю, вам нужно потратить некоторое время на чтение, как писать SQL-соединения. Ваш запрос не имеет смысла. – kosa
Не похоже, что вы указали какие-либо псевдонимы. –