所以这个星期一,我尝试运行以下查询并且它有效:
SELECT
DatumOntslag, p.Naam, d.Naam, med.ID, m.Naam, HoeVaakPerDag
FROM
Patient p, Diagnose d, Medicatie med, Medicijn m
WHERE
p.DiagnoseID = d.ID
AND med.PatientID = p.ID
AND med.MedicijnID = m.ID
AND p.ID = " + lbPatientsID.SelectedItem.ToString();
在此,lbPatientsId.SelectedItem.ToString()
是我程序中的变量。现在,如果我打开我的Access数据库并向表中添加一行新数据" Patient"我尝试运行该查询,但它不起作用。但是,当我使用旧患者的ID运行查询时,它确实有效。
这有效(今天之前创建的p.ID
(患者ID)):
SELECT
DatumOntslag, p.Naam, d.Naam, med.ID, m.Naam, HoeVaakPerDag
FROM
Patient p, Diagnose d, Medicatie med, Medicijn m
WHERE
p.DiagnoseID = d.ID
AND med.PatientID = p.ID
AND med.MedicijnID = m.ID
AND p.ID = 21;
这不起作用(今天创建p.ID
(患者ID)):
SELECT
DatumOntslag, p.Naam, d.Naam, med.ID, m.Naam, HoeVaakPerDag
FROM
Patient p, Diagnose d, Medicatie med, Medicijn m
WHERE
p.DiagnoseID = d.ID
AND med.PatientID = p.ID
AND med.MedicijnID = m.ID
AND p.ID = 31;
答案 0 :(得分:0)
因此,引用
lbPatientsID.SelectedItem.ToString()
,它将传递为" lbPatientsID.SelectedItem.ToString()"。
所以,如果你想让它工作
P.ID = "{Some selected value}"
这样做:
SELECT DatumOntslag, p.Naam, d.Naam, med.ID, m.Naam, HoeVaakPerDag
FROM Patient p, Diagnose d, Medicatie med, Medicijn m
WHERE p.DiagnoseID = d.ID
AND med.PatientID = p.ID
AND med.MedicijnID = m.ID
AND p.ID = " "+ lbPatientsID.SelectedItem.ToString();
然后我认为它会像你想要的一样工作。
答案 1 :(得分:0)
由于p.ID被比较为31,我想这应该有用(应该显示数据)
SELECT DatumOntslag, p.Naam, d.Naam, med.ID, m.Naam, HoeVaakPerDag
FROM Patient p, Diagnose d, Medicatie med, Medicijn m
WHERE p.DiagnoseID = d.ID AND med.PatientID = 31
AND med.MedicijnID = m.ID AND p.ID = 31;
或者也尝试让你的限制更少
WHERE
p.DiagnoseID = d.ID AND med.PatientID = 31
-- AND med.MedicijnID = m.ID AND p.ID = 31;
WHERE
-- p.DiagnoseID = d.ID AND med.PatientID = 31
-- AND
med.MedicijnID = m.ID AND p.ID = 31;
还尝试删除WHERE使用TOP以避免重载DataBase
SELECT TOP 10 DatumOntslag, p.Naam, d.Naam, med.ID, m.Naam, HoeVaakPerDag
FROM Patient p, Diagnose d, Medicatie med, Medicijn m
WHERE p.DiagnoseID = d.ID AND med.MedicijnID = m.ID