Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

vb.net and sql query

I am new to vb.net so bear with me. I have some managable tables in ms access database. I am trying to write a sql query that will give me following output:

table1 ( columnA - columnB)
table2 ( columnA - columnB)
table3 ( columnA - columnB)

I have column name "column A" and “column B" in all tables.

I want to retrieve tables name and sum of (column A – column B) of all tables. When I run the sql statement I get the following error:

The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect

Can someone help me to write a sql query please?

Here is my full code:

Dim con As New OleDbConnection(" Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\msacc.accdb")   

Dim Query2 As String = " SELECT Table1 AS Table, SUM(a) - SUM(b) AS Result FROM table1 UNION  SELECT Table2, SUM(a) - SUM(b) FROM table2  UNION SELECT Table3, SUM(a) - SUM(b) FROM table3"
Dim Da As OleDbDataAdapter, Ds As New DataSet, Dtb As New System.Data.DataTable
con.Open()
Da = New OleDbDataAdapter(Query2, con)
Da.Fill(Ds)
con.Close()
Dtb = Ds.Tables(0)
DataGridView1.DataSource = Dtb
like image 819
rony Avatar asked Feb 20 '26 17:02

rony


1 Answers

If understand correctly you're probably looking for this

  1. Use quotes around string literals ('Table1', Table2, 'Table3')
  2. Use brackets [] around an alias that is a reserved word ([Table])
  3. Use UNION ALL instead of UNION since you don't need to eliminate any duplicates in your resultset
SELECT 'Table1' AS [Table], SUM(a) - SUM(b) AS Result 
  FROM table1 
 UNION ALL
SELECT 'Table2', SUM(a) - SUM(b) 
  FROM table2  
 UNION ALL
SELECT 'Table3', SUM(a) - SUM(b) 
  FROM table3

Here is SQLFiddle demo (SQL Server) The query itself will work in MS Access just fine

like image 143
peterm Avatar answered Feb 23 '26 10:02

peterm



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!