Pertanyaan UNION tanpa meja dalam MS Access (Jet/ACE)
Dalam Microsoft Access menggunakan enjin pangkalan data Jet/ACE, anda mungkin menghadapi ralat semasa cuba menggunakan pertanyaan UNION tanpa menyatakan sumber data jadual. Mesej ralat "Input pertanyaan mesti mengandungi sekurang-kurangnya satu jadual atau pertanyaan" akan muncul.
Penghadan ini berpunca daripada keperluan enjin untuk sekurang-kurangnya satu jadual atau pertanyaan dalam klausa FROM, walaupun tiada medan daripada sumber data itu digunakan. Untuk mengatasi masalah ini, anda boleh menggunakan jadual maya yang sentiasa mengandungi satu baris.
Buat jadual maya
<code>Public Sub CreateDualTable() Dim strSql As String strSql = "CREATE TABLE Dual (id COUNTER CONSTRAINT pkey PRIMARY KEY);" Debug.Print strSql CurrentProject.Connection.Execute strSql strSql = "INSERT INTO Dual (id) VALUES (1);" Debug.Print strSql CurrentProject.Connection.Execute strSql strSql = "ALTER TABLE Dual" & vbNewLine & _ vbTab & "ADD CONSTRAINT there_can_be_only_one" & vbNewLine & _ vbTab & "CHECK (" & vbNewLine & _ vbTab & vbTab & "(SELECT Count(*) FROM Dual) = 1" & vbNewLine & _ vbTab & vbTab & ");" Debug.Print strSql CurrentProject.Connection.Execute strSql End Sub</code>
Gunakan jadual maya
Menggunakan jadual maya kini anda boleh membuat pertanyaan UNION tanpa meja:
<code>SELECT "foo" AS my_text FROM Dual UNION ALL SELECT "bar" FROM Dual;</code>
Kaedah alternatif
Sebagai alternatif, anda boleh menggunakan pernyataan SELECT dengan klausa TOP 1 atau WHERE untuk mengehadkan keputusan yang ditetapkan kepada satu baris.
Sila ambil perhatian bahawa kekangan semak hanya tersedia dalam penyata yang dilaksanakan melalui ADO (CurrentProject.Connection.Execute). DAO (CurrentDb.Execute) tidak menyokong membuat kekangan semakan.
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Pertanyaan UNION Tanpa Jadual dalam MS Access?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!