我试图在一个表上选择所有(*)数据列并伴随INNER JOIN另一个表来获取菜单项名称。请查看我的查询
string query = "SELECT ol.*, m.menu_name " +
"FROM orderlist ol " +
"INNER JOIN menudb m " +
"ON m.menu_ID = ol.menu_ID " +
"WHERE ol.order_ID = @orderID";
使用m.menu_name
dr["menu_name"].ToString()
任何想法为什么?
订单列表列
orderlist_ID
order_ID
menu_ID
order_quantity
menudb表格列
menu_ID
menu_name
menu_price
menu_description
menu_category
menu_status
答案 0 :(得分:2)
您的查询中存在许多问题。
首先,由于关键字之间缺少空格而导致语法错误。
"ON m.menu_ID = ol.menu_ID" + // << HERE
"WHERE ol.order_ID = '@orderID'";
你应该在ol.menu_ID
"ON m.menu_ID = ol.menu_ID " +
"WHERE ol.order_ID = '@orderID'";
第二,如果参数化了查询,则不应使用单引号包装参数。这导致成为字符串而不再是参数。
"WHERE ol.order_ID = @orderID"; // remove single quote
答案 1 :(得分:1)
你在ol.menu_ID
之后错过了空间。
"ON m.menu_ID = ol.menu_ID "+