2

Avatar、Super_Avatar、および Trade の 3 つのテーブルがあります。

取引属性 = avName | バイヤーID | 販売者 ID...
アバター属性 = avName | 生年月日 | 性別...
Super_Avatar 属性 = avName | 知恵..

すべて avName で接続されています。Trades テーブルは、アバターがトレードされた回数を表します。カウントを使用して、アバターが取引された数を分離しました (特定のアバター (avName) が取引テーブルに表示される回数をカウントすることによって)。2 回以上表示されるものだけが必要です。

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

先ほど作成した一時テーブル (tempTable) を、同じクエリで avName を介して Super_Avatar および Avatar テーブルと結合するにはどうすればよいですか?

4

2 に答える 2

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
于 2013-04-10T18:03:25.497 に答える
0

共通テーブル式を使用すると、一時テーブルも必要ありません

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

(これは ANSI SQL であり、最新のすべての DBMS で動作します)

于 2013-04-10T17:56:08.093 に答える