我正在开发一个VB.NET程序,它需要连接多个表并在DataGridView上显示它们。
我写了这个查询:
SELECT m.idMedicos, m.Nombre, m.Apellido, h.idHistorial, h.CedulaP,
r.*, rm.*,
me.Nombre, me.Tipo, me.Administracion
FROM Medicos m
INNER JOIN Historial h ON m.idMedicos = h.idMedicos
INNER JOIN Recetas r ON r.idHistorial = h.idHistorial
INNER JOIN RecetaMedica rm ON rm.idReceta = r.idReceta
INNER JOIN Medicamentos me ON me.idMedicamento = rm.idMedicamento
WHERE h.CedulaP = $dato
($dato
因查询而异)
当我运行我的程序时,它失败并显示错误:“FROM子句中的语法错误”。
我尝试在每个INNER
之前添加逗号,但错误仍然存在。
注意:我正在使用MS Access数据库,并使用OleDbDataAdapter运行所有查询。
Dim Consulta As New OleDb.OleDbDataAdapter("Select m.idMedicos, m.Nombre, m.Apellido,
h.idHistorial, h.CedulaP, r.*, rm.*, me.Nombre, me.Tipo, me.Administracion
FROM Medicos m INNER JOIN Historial h ON m.idMedicos = h.idMedicos, INNER JOIN Recetas r ON r.idHistorial = h.idHistorial, INNER JOIN RecetaMedica rm ON rm.idReceta = r.idReceta,
INNER JOIN Medicamentos me ON me.idMedicamento = rm.idMedicamento
WHERE h.CedulaP ='" + dato + "'", conexion)
¿你们可以帮我一把,看看这里发生了什么? :/
答案 0 :(得分:0)
我认为问题在于你没有在最初的SELECT中包含me.idMedicamento,所以它没有认出它。
答案 1 :(得分:0)
查看this答案,您似乎需要使用括号来保持连接在逻辑上分开。 Here是关于这个主题的好读物。
正确完成后,您的查询应如下所示:
var cubes = [
[['a',1],['b',2],['c',3]],
[['a',4],['d',2],['c',3],['x',5]],
[['a',1],['c',2],['f',3],['x',1],['o',7]]
];
var out = [];
for (var i=0; i<cubes.length; i++) {
for (var j=0; j<cubes[i].length; j++) {
out.push(cubes[i][j]);
for (var x=0; x<out.length-1; x++) {
if (out[x][0] == cubes[i][j][0]) {
out[x].push(cubes[i][j][1]);
out.pop();
}
}
}
}
console.log(out);
答案 2 :(得分:0)
我已经找到了解决这个问题的方法(事实上,很久以前。)
我下载了Fly Speed MySQL Query ...这是一个程序,您可以在其中创建表,关系和其他内容,最终生成正确的代码。 (如果有必要,有时你需要做一些改变。)
http://www.activedbsoft.com/overview-querytool.html
谢谢你的帮助。