2013-04-10 31 views
3

我有三個表,Avatar,Super_Avatar和Trade。根據出現次數使用count來隔離記錄

Trade attributes = avName | buyerID | sellerID ...
Avatar attributes = avName | DOB |性別...
Super_Avatar attributes = avName |智慧..

有全部通過avName連接。交易表格表示虛擬形象交易的次數。我使用計數來隔離化身交易的數量(通過計算特定化身(avName)在交易表中出現的次數)。我只想要那些出現兩次以上的人。

SELECT avName 
INTO tempTable 
FROM Trade 
GROUP BY avName 
HAVING COUNT(*) > 2; 

如何加入,我只是在同一個查詢通過avName的Super_Avatar和阿凡達表創建臨時表(不是Temptable)?

+0

您不能在同一個查詢中創建tempTable,然後在其上JOIN/SELECT。他們必須是單獨的查詢,或者您可以使用子查詢來加入。請通過添加適當的標記(Oracle,SQL Server,MySQL等)來指定您要定位的RDBMS。可能會有利用不被普遍支持的語言或產品功能的答案。此外,通過使用特定的RDBMS標記它,您的問題可能會得到人們的注意,這些人可能更適合回答 – Taryn 2013-04-10 17:55:01

+0

thanx for advice..im new so im stil learnin to optimize navigatin and using the site..thnx again .. – Bob 2013-04-10 19:34:33

回答

1

您不能插入到一個臨時表,然後在同一查詢中選擇或加入它。但是你可以,你一個子查詢或CTE(取決於數據庫):

select * 
from 
(
    SELECT avName 
    FROM Trade 
    GROUP BY avName 
    HAVING COUNT(*) > 2 
) t 
inner join Avatar a 
    on t.avName = a.avName 
inner join Super_Avatar s 
    on t.avName = s.avname 

由於您使用的MS Access,它要求各地各括號加入,所以你應該能夠使用:

select * 
from 
((
    SELECT avName 
    FROM Trade 
    GROUP BY avName 
    HAVING COUNT(*) > 2 
) as t 
inner join Avatar as a 
    on t.avName = a.avName) 
inner join Super_Avatar as s 
    on t.avName = s.avname 
+0

好吧我會嘗試它,並回到你,thnx 4迴應.. – Bob 2013-04-10 19:20:12

+0

@Bob我已經更新了我的答案,因爲你使用MS Access。 – Taryn 2013-04-10 19:37:28

+0

沒有運氣,我開了一個sytax錯誤..它看起來像Access不接受任何東西后關閉的球.. – Bob 2013-04-10 19:48:11

0

使用公共表表達式,你甚至不需要臨時表

with tempTable as (
    SELECT avName 
    FROM Trade 
    GROUP BY avName 
    HAVING COUNT(*) > 2 
) 
select * 
from other_table 
    join tempTable on ... 

(這是ANSI SQL,並適用於所有現代DBMS)

+0

ok我試試看,並回到你,thnx 4回覆..使用Access 2010. – Bob 2013-04-10 19:20:55

+0

@Bob:我不認爲MS Access支持CTE。 – 2013-04-10 19:25:49

+0

我想,我得到了一些奇怪的錯誤.. – Bob 2013-04-10 19:28:41