2014-05-27 3 views
1

У меня есть 2 таблицы, «EMPL» и «REG»:Выбор всех записей из двух разных таблиц

enter image description here

У меня есть 5 NUM_EMPL записей в EMPL, в РЭГ у меня есть только 2 из этих 5 записей , НО У меня еще 5 рек.

Что я хочу сделать, это Показать эти 10 записей:

enter image description here

Как я мог это сделать? Я попытался с:

SELECT  ACM_ACT.NUM_EMPL, ACM_EMPL.NUM_EMPL AS AEMPL, ACM_EMPL.NOM_EMPL 
FROM   ACM_ACT CROSS JOIN ACM_EMPL 
ORDER BY AEMPL, ACM_EMPL.NOM_EMPL 

queries И еще, но они не работают!

+0

вы слышали Внешние соединения ??? – Guanxi

ответ

1

Захват все номера сотрудника в КТР первый:

;WITH cte AS (SELECT NUM_EMPL FROM EMPL UNION SELECT NUM_EMPL FROM REG) 
SELECT cte.NUM_EMPL, EMPL.NAME 
FROM cte 
LEFT OUTER JOIN EMPL ON cte.NUM_EMPL = EMPL.NUM_EMPL 
+0

Это работает @ Dave.Gugg! – Jean

+0

Если я хочу сделать тот же SELECT, но я хочу сделать это для мобильного устройства. ** Как я могу это сделать? ** Я пробовал с той же строкой, но он не работает 'Sql Server Compact ADO.NET Data Provider [Номер строки токена = 1, смещение линии токена = 1, токен в ошибке = WITH] ' @ Dave.Gugg @Jean – PETTA

+0

@Jean Вышеприведенный запрос получит ** EMPL_NAME ** как' NUll', только если нет соответствующих значений, поэтому попробуйте использовать как '; WITH cte AS (SELECT NUM_EMPL FROM EMPL UNION SELECT NUM_EMPL FROM REG) SELECT cte.NUM_EMPL, случай, когда EMPL.NAME является Null, затем «-----», иначе EMPL.NAME заканчивается как Name FROM cte LEFT OUTER JOIN EMPL ON cte.NUM_EMPL = EMPL.NUM_EMPL' – Rajesh

3

Использование FULL JOIN:

SELECT ISNULL(E.NUM_EMPL,R.NUM_EMP) AS NUM_EMP, 
     E.NAME 
FROM EMPL E 
FULL JOIN REG R 
    ON E.NUM_EMPL = R.NUM_EMP 
1

Небольшой коррекции Dave.Gugg в Ответ

 ;WITH cte 
     AS 
     (
      SELECT NUM_EMPL FROM EMPL 
      UNION 
      SELECT NUM_EMPL FROM REG 
     ) 
     SELECT cte.NUM_EMPL, 
     Case when EMPL.NAME is Null then '-----' else EMPL.NAME end as Name 
     FROM cte  
     LEFT OUTER JOIN EMPL ON cte.NUM_EMPL = EMPL.NUM_EMPL 
+0

Wow , Я не знал, что вы могли бы все это сделать. Отлично @ Райджеш – Jean

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