Как сделать следующее присоединение? - PullRequest
1 голос
/ 11 августа 2011

Q:

  • У меня есть результат DataTable из следующего запроса:

SELECT UNIQUE a.crsnum_e ,  a.crsnum_e  || '/ ' || a.crstteng crs_name, b.period , b.crscls , c.crsday , c.from_lect , c.to_lect , c.to_lect - c.from_lect + 1 Subtraction, c.lect_kind 

FROM rg1course a , rg3crsgrp b , ct1table c , ct1tablelect d 

WHERE a.crsnum = b.crsnum 
AND b.crsnum = c.crsnum
AND b.crscls = c.crscls
AND b.batch_no = c.batch_no 
AND c.serial_key = d.serial_key  

AND d.lect_code = ....
AND b.batch_no = ....
  • У меня есть еще один DataTable: состоит из:(Приходит из другой таблицы базы данных).

batch_no p.k
crsnum   p.k
lect_code p.k
evaluation

Что я хотел бы сделать, это:

объединить две таблицы данных, где мне нужен столбец evaluationв результате, даже если это = null.Я имею в виду, что мне всегда нужно получить first datatable, даже если у него нет экземпляра во второй таблице данных.

Как это сделать с помощью:

INFORMIX JOIN.

или

LINQ.

Ключи Pimary (batch_no, crsnum, lect_code).

1 Ответ

1 голос
/ 11 августа 2011

В Informix, чтобы указать внешнее объединение, вам нужно сделать следующее:

FROM table1 t1, OUTER table2 t2
WHERE t1.batch_no = t2.batch_no and ...

Полученный набор данных будет состоять из всех записей из таблицы1 и любых записей из таблицы2, которые соответствуют условию WHERE (и NULLs)где это не соответствует).

Если вы хотите сделать это в LINQ, эта статья имеет хорошее объяснение с примерами: http://smehrozalam.wordpress.com/2009/06/10/c-left-outer-joins-with-linq/

...