プロが教えるわが家の防犯対策術!

フィールドとフィールドの形式が全く同じテーブルが複数あります。
このテーブルを縦にくっつけて1つのテーブルにすることができますか?

クエリの結合では横にしかつながらないため、困っています。
よろしくお願いします

A 回答 (4件)

以下の方法では、駄目ですか?



SELECT フィールド1,フィールド2,フィールド3 FROM テーブル1
UNION ALL
SELECT フィールド1,フィールド2,フィールド3 FROM テーブル2
UNION ALL
SELECT フィールド1,フィールド2,フィールド3 FROM テーブル3
    • good
    • 0
この回答へのお礼

ありがとうございます。一発解決できました。

お礼日時:2008/10/12 10:39

tab1:



ID_fld1
1__AAAA
2__BBBB
3__CCCC

tab2:

ID_fld1
1__AAAA
2__BBBB
3__CCCC

tab3:

ID_fld1
1__AAAA
2__BBBB
3__CCCC

この場合、一体、どのように統合するのでしょうか?

tab4:
fld1
AAAA
BBBB
CCCC
AAAA
BBBB
CCCC
AAAA
BBBB
CCCC

という具合でしょうか?

クエリ1:
SELECT 1, fld1 FROM tab1
UNION
SELECT 2, fld1 FROM tab2
UNION
SELECT 3, fld1 FROM tab3;

クエリ2;
SELECT クエリ1.fld1 INTO tab4
FROM クエリ1;

で・・・。
    • good
    • 0

失礼!



UNION ALL
UNION

で可能でした。
よって、私の回答は無視されたし!
    • good
    • 0

DAOやADOでレコードを扱う方法でも出来ます。

参考に。

生徒、生徒11、生徒12テーブルがあるとします(同じフィールド構成)
生徒テーブルをコピーして、生徒14を作り、レコードを全行削除しておきます。
Sub test03()
Dim db As DAO.Database
Set db = CurrentDb
Dim outf As DAO.Recordset
Set outf = db.OpenRecordset("生徒14")
Dim mySql As String
mySql = "SELECT * From 生徒 UNION ALL SELECT * FROM 生徒11 UNION ALL SELECT * FROM 生徒12"
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset(mySql)
If rs.RecordCount = 0 Then MsgBox "なし"
Do Until rs.EOF
MsgBox rs.Fields("氏名") & " " & rs.Fields("県")
outf.AddNew
outf!氏名 = rs!氏名
outf!県 = rs!県
outf.Update
rs.MoveNext
Loop
rs.Close
 outf.Close
Set rs = Nothing
Set outf = Nothing
db.Close
Set db = Nothing
End Sub
の実行で合体したレコードのテーブルが出来ます。
outf!氏名 = rs!氏名
outf!県 = rs!県
は(上記では省略してますが)すべてのフィールドを網羅してください。
合体したレコードで何かしたいだけのときは、outf関連の行は省き、Msgboxの箇所に、処理したいことのコードを入れる。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!