VBA --
'-------------------------
2つのテーブルA,Bでクエリを作成する。
カウントを使い、それぞれの抽出結果に1から番号を与え、2つの抽出結果をLEFT JOIN〜ON〜する。
テーブルA,Bを別々に条件Xによって抽出した場合、抽出されるレコード数は違う。
希望する抽出結果は、
テーブルAの条件Xによる抽出結果AXを基本に
テーブルBの条件Xによる抽出結果BXを順番に1つずつ割り当てていき、
BXが足りなくなったら、以降は空白となる。
前提としてレコード数は、必ずAX>BX。
(主キーが無い場合はクエリでは難しい。)
主キーがIDだとすると
'-------------------------
テーブルA(ID,Data)
テーブルB(ID,Data)
'-------------------------
以下は、SQL
'-------------------------
SELECT QA.Line, QA.DATA AS AX, QB.DATA AS BX
FROM
(
SELECT Count(N.ID) AS Line, A.ID, A.DATA
FROM テーブルA AS A, テーブルA AS N
WHERE N.ID<=A.ID AND A.DATA=条件X AND N.DATA=条件X
GROUP BY A.ID, A.DATA
) AS QA
LEFT JOIN
(
SELECT Count(N.ID) AS Line, B.ID, B.DATA
FROM テーブルB AS B, テーブルB AS N
WHERE N.ID<=B.ID AND B.DATA=条件X AND N.DATA=条件X
GROUP BY B.ID, B.DATA
) AS QB
ON QA.Line = QB.Line;
参考:
http://oshiete1.goo.ne.jp/qa2695735.html
|