2014-12-06 9 views
0

У меня есть следующий запрос, который отлично работает.Oracle SQL inner join

SELECT c.id, c.customer_name, b.batch_prefix, b.BatchCount, b.InvoiceCount, e.time_of_delivery, e.time_of_delivery_mail, e.time_of_delivery_clock 
FROM koll_customers c 
INNER JOIN (
SELECT batch_prefix, COUNT(*) AS BatchCount, 
SUM (batch_counter) AS InvoiceCount 
FROM koll_batchlogs 
WHERE 
      exists_db = 0 
      and is_checked = 1 
     and batch_counter > 0 
     and trunc(created_date) > trunc(sysdate-7) 
GROUP BY batch_prefix) b 
ON b.batch_prefix=c.customer_prefix 
INNER JOIN koll_customer_export e 
ON c.id = e.id 

Но, когда я добавить еще один JOIN (последнее соединение) с SELECT, и где он дает ошибку: "Invalid идентификатор"

SELECT c.id, c.customer_name, b.batch_prefix, b.BatchCount, b.InvoiceCount 
FROM koll_customers c 
INNER JOIN (
SELECT batch_prefix, COUNT(*) AS BatchCount, 
SUM (batch_counter) AS InvoiceCount 
FROM koll_batchlogs 
WHERE 
      exists_db = 0 
      and is_checked = 1 
     and batch_counter > 0 
     and trunc(created_date) > trunc(sysdate-7) 
GROUP BY batch_prefix) b 
ON b.batch_prefix=c.customer_prefix 
INNER JOIN (
    SELECT time_of_delivery 
    FROM koll_customer_export 
    WHERE time_of_delivery=2) e 
ON e.id = c.id 

Интересно, что проблема с последним присоединиться?

ответ

0

Это join:

INNER JOIN 
(SELECT time_of_delivery 
FROM koll_customer_export 
WHERE time_of_delivery=2 
) e 
ON e.id = c.id 

Вы имеете в виду e.id, но вы не имеете, что в подзапроса. Попробуйте это:

INNER JOIN 
(SELECT time_of_delivery, id 
--------------------------^ 
FROM koll_customer_export 
WHERE time_of_delivery=2 
) e 
ON e.id = c.id 
+0

Perfect :-) Спасибо. Я отмечаю его, когда заканчивается время. –

0
INNER JOIN (
SELECT time_of_delivery 
FROM koll_customer_export 
WHERE time_of_delivery=2) e 
ON e.id = c.id 

нет столбца с именем ID.