2011-08-11 65 views
1

問:如何進行以下連接?

  • 我有以下查詢的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 = .... 
  • 我有另外一個數據表:包括:(從另一個數據庫表附帶)。

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

我會做的是:

加入兩個DataTable,在這裏我需要evaluation列中的結果,即使它是= null。我的意思是我需要總是得到first datatable,即使它沒有第二個數據表中的任何實例。

如何使用做到這一點:

INFORMIX JOIN. 

LINQ. 

的pimary鍵(的batch_no,crsnum,lect_code)。

回答

1

在Informix中,指定外連接,你需要做到以下幾點:

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

得到的數據集是由表1中的所有記錄,並從表2那場比賽在WHERE條件的任何記錄(和空值它不匹配)。

如果你想這樣做的LINQ,本文結合實例了很好的解釋:http://smehrozalam.wordpress.com/2009/06/10/c-left-outer-joins-with-linq/

+0

非常感謝.... –

+0

這樣的作品,但它是一個老式的外連接符號,它是特殊的到Informix。大多數數據庫管理系統對於外連接都具有類似的古老符號。 SQL-92標準定義了一個標準的JOIN表示法,包括LEFT OUTER JOIN,你應該在所有查詢中使用它,而不是在FROM子句中使用逗號分隔的表名列表和WHERE子句中的連接條件: 'FROM rg1course a JOIN rg3crsgrp b ON a.crsnum = b.crsnum JOIN ct1table c ON b.crsnum = c.crsnum AND b.crscls = c.crscls AND b.batch_no = c.batch_no JOIN ct1tablelect d ON c.serial_key = d.serial_key'。 –