2010-01-18 21 views
7

बहाना शीर्षक प्रति नवीनतम पंक्तियों का चयन, मैं कम कुछ के साथ और बिंदु तक नहीं आ सकता है ...अलग विदेशी कुंजी मान

मैं तीन कॉलम के साथ एक मेज के अपडेट 'मिल गया है, पाठ , टाइपिड, बनाया गया - टेक्स्ट एक टेक्स्ट फ़ील्ड है, टाइपिड एक 'टाइप' टेबल से एक विदेशी कुंजी है और बनाया गया टाइमस्टैम्प है। कोई उपयोगकर्ता एक अद्यतन दर्ज कर रहा है और 'टाइप' का चयन करता है जो यह भी मेल खाता है।

कॉलम 'आईडी' और 'नाम' के साथ एक समान 'प्रकार' तालिका है।

मैं 'प्रकार' तालिका में मौजूद कई पंक्तियों के साथ परिणाम सेट के साथ समाप्त होने की कोशिश कर रहा हूं और विशेष पंक्तियों के लिए update.text से नवीनतम मान के साथ समाप्त करने की कोशिश कर रहा हूं। इसलिए यदि मेरे पास 3 प्रकार हैं, तो 3 पंक्तियों को वापस किया जाएगा, प्रत्येक प्रकार के लिए एक पंक्ति और प्रश्न के प्रकार के लिए सबसे हालिया अपडेट.टेक्स्ट मान।

कोई विचार?

धन्यवाद,

जॉन।

उत्तर

14
select u.text, u.typeid, u.created, t.name 
from (
    select typeid, max(created) as MaxCreated 
    from updates 
    group by typeid 
) mu 
inner join updates u on mu.typeid = u.typeid and mu.MaxCreated = u.Created 
left outer join type t on u.typeid = t.typeid 
0

वास्तविक कॉलम क्या हैं जिन्हें आप वापस करना चाहते हैं?

SELECT t.*, 
     y.* 
    FROM TYPE t 
    JOIN (SELECT u.typeid, 
       MAX(u.created) 'max_created' 
      FROM UPDATES u 
     GROUP BY u.typeid) x ON x.typeid = t.id 
    JOIN UPDATES y ON y.typeid = x.typeid 
       AND y.created = x.max_created 
0
SELECT 
    TYP.id, 
    TYP.name, 
    TXT.comment 
FROM 
    dbo.Types TYP 
INNER JOIN dbo.Type_Comments TXT ON 
    TXT.type_id = TYP.id 
WHERE 
    NOT EXISTS 
    (
      SELECT 
       * 
      FROM 
       dbo.Type_Comments TXT2 
      WHERE 
       TXT2.type_id = TYP.id AND 
       TXT2.created > TXT.created 
    ) 

या:

SELECT 
    TYP.id, 
    TYP.name, 
    TXT.comment 
FROM 
    dbo.Types TYP 
INNER JOIN dbo.Type_Comments TXT ON 
    TXT.type_id = TYP.id 
LEFT OUTER JOIN dbo.Type_Comments TXT2 ON 
    TXT2.type_id = TYP.id AND 
    TXT2.created > TXT.created 
WHERE 
    TXT2.type_id IS NULL 

या तो मामले में, अगर बनाया तिथि एक ही type_id साथ दो पंक्तियों के बीच समान हो सकता है तो आप उस के लिए खाते की आवश्यकता होगी।

मैंने यह भी माना है कि कम से कम एक टिप्पणी प्रति प्रकार मौजूद है। यदि ऐसा नहीं है तो आपको इसके लिए मामूली समायोजन करना होगा।

संबंधित मुद्दे