2011-08-10 60 views
1

我想從加入中獲得一個隨機記錄,但是我無法讓它工作!有任何想法嗎?它使用Microsoft Access 2003ms access 2003中加入的隨機記錄

table = members 
=============== 
memberID int 
name varchar 

table = testimonials 
==================== 
testimonialID int 
memberID int 
content memo 

select m.*, (SELECT t.content from testimonials t where t.memberID=m.memberID ORDER BY rnd(t.testimonialID)) as testimonialtext 
FROM members m; 

基本上,我需要每個成員的記錄和該成員一個隨機的告別賽。我還要補充一點,我已經試過了內加入太...

select m.*, t.content FROM members m 
INNER JOIN testimonials t ON m.memberID=t.memberID 
ORDER BY rnd(t.testimonialID) 

感謝您的幫助。

+0

究竟是什麼不起作用?記錄正在成倍增長? – heximal

+1

第一個查詢返回「子查詢中的無效備註,OLE或超鏈接對象't.content'」。這是一個備忘錄字段,不是上面的文本。不知道如何解決這一個! –

+0

第二個查詢返回什麼?或者也會導致錯誤? – heximal

回答

0

嘗試用TOP子句

select m.*, (SELECT top 1 t.content from testimonials t where t.memberID=m.memberID ORDER BY rnd(t.testimonialID)) as testimonialtext 
FROM members m; 

OK限制,那麼我們可以這樣做:

select 
    m.*, 
    t3.content 
FROM 
    members m, 
    (select 
     top 1 t.testimonialID, 
    from 
     testimonials t 
    where 
     t.memberID=m.memberID 
    order by 
     rnd(t.testimonialID) 
    ) t2, 
    testimonials t3 
where 
    t3.testimonialID = t2.testimonialID; 
+0

謝謝...雖然仍然產生無效的備忘錄字段錯誤(如上面的評論) –

+2

從MS Access的幫助說:「一個子查詢不能返回一個備忘錄或OLE對象,它不能與一個備忘錄或OLE對象在一個表達式「 –

+0

編輯答案 – heximal