2013-07-22 4 views
1

У меня есть запрос INNER JOIN, который отлично работает сам по себе, и я хочу, чтобы LEFT JOIN в другой запрос/SELECT оператор, содержащий предложение WHERE. Я не могу присоединиться к обоим запросам. Он должен увязать wt.tkinit = t.tkinit Можете ли вы предложить, что мне не хватает.Влево Присоединиться к другому заявлению выбора

SELECT c.clnum, m.mmatter, ot.tkinit AS 'otkinit', wt.tkinit AS 'wtikint', t.tkrt01, 
SUM(mt.mthrwkdb) AS 'whrs2010', 
FROM client c, matter m, timekeep ot, timekeep wt, mattimhs mt, periodt p, timerate t 
WHERE c.clnum = m.mclient 
AND m.mmatter = mt.mtmatter 
GROUP BY c.clnum, m.mmatter, ot.tkinit, wt.tkinit 

SELECT t.tkinit, t.tkrt01 
FROM timerate t 
INNER JOIN (
SELECT tkinit, max(tkeffdate) as max_effdate 
FROM timerate WHERE DATEPART(year, tkeffdate) = '2012' 
GROUP BY tkinit) mt ON mt.tkinit = t.tkinit AND mt.max_effdate = t.tkeffdate 

ответ

1

ли вы попробовать следующее:

SELECT fields from (SELECT1) s1 
    LEFT JOIN 
    (SELECT2) s2 
    on s1.wt.tkinit = s2.t.tkinit. 

Не забудьте получить нормальное имя для wt.tkinit и t.tkinit в их выбирает, как wt_tkinit и t_tkinit, потому что вы не можете сделать двойной псевдонимы.

+0

жаль не повезло. Что такое s1 и s2. временная таблица? – Manu

+0

Это ваши два вопроса. Поместите его вместо SELECT1 и SELECT2 –

0
SELECT temp2.tkinit, temp2.tkrt01, temp.clnum, temp.mmatter, temp.otkinit, temp.tkrt01, temp.whrs2010 
FROM 
    (SELECT c.clnum, m.mmatter, ot.tkinit AS 'otkinit', wt.tkinit AS 'wtikint', t.tkrt01, 
    SUM(mt.mthrwkdb) AS 'whrs2010', 
    FROM client c, matter m, timekeep ot, timekeep wt, mattimhs mt, periodt p, timerate t 
    WHERE c.clnum = m.mclient 
    AND m.mmatter = mt.mtmatter 
    GROUP BY c.clnum, m.mmatter, ot.tkinit, wt.tkinit) temp 
LEFT JOIN 
    SELECT t.tkinit, t.tkrt01 
    FROM timerate t 
    INNER JOIN (
    SELECT tkinit, max(tkeffdate) as max_effdate 
    FROM timerate WHERE DATEPART(year, tkeffdate) = '2012' 
    GROUP BY tkinit) mt ON mt.tkinit = t.tkinit AND mt.max_effdate = t.tkeffdate) temp2 
ON temp.wtikint = temp2.tkinit 

Будьте осторожны, ваши имена полей, но это может быть началом

+0

Я получаю это сообщение erroe – Manu

+0

Проверьте названия полей – tkendrick20

Смежные вопросы