2010-11-21 13 views
2

İki tablom var, belgeler ve düzeltmeler. Belgeler iki sütuna sahiptir: belge kimliği ve başlığı ve düzeltmeler 3 sütuna sahiptir: belge kimliği, revizyon kimliği, gövde.Yalnızca belirli satırlarda tam metin arama dizini oluşturma

Düzeltmeler tablosunun gövde sütununa tam metin aramamı gerçekleştirdiğimde, yalnızca en son düzeltmeye karşı sorgulamak isterim. SQL Server'a yalnızca bir belgenin en son revizyonu için satırları dizine eklemesini söylemenin bir yolu var mı?

cevap

2

Afaik, yalnızca belirli bir kimlikle kayıtları dizine eklemenin bir yolu yoktur, ancak sorguya en son düzeltme kimliğini ekleyebilirsiniz. ekleme gibi yapılabilir

:

SELECT 
    * 
FROM 
    revisions r 
WHERE 
    /* Your r.body condition AND */ 
    r.revisionId = 
    (SELECT 
     MAX(mr.revisionId) 
    FROM 
     revisions mr 
    WHERE mr.documentid = r.documentid) 

hep, belgelerin masaya ya sahip başka bir masaya o revizyon gövdesini eklemek iyi olabilir son sürümü indeksine sadece gerekiyorsa Belge ile 1: 1 ilişki. Bu şekilde, her belge bir dizinlenmiş revizyona sahipken, diğerleri sadece yedekleme için saklanır. Belgelerinizde birçok düzeltme varsa, bu özellikle yararlıdır.

+0

Teşekkürler! Tüm revizyonlarda arama yaparken gerçekten kirli hissediyorum ve diğer revizyonlar için sonuçlar çıkarıyorum (algoritma hakkında fazla bir şey bilmeden, genel sıralama sonuçlarını gösterebilir). Belge tablosundaki revizyonlar, böylece revizyonlar tablosu bir arşivin daha fazlası olarak var olur. – inolen

İlgili konular