0

有些人可能已经注意到了这一点,我想确认一下,我对复杂的 SQL 字符串真的没有经验。我只知道简单的 SELECT 、 INSERT 、 UPDATE 和 DELETE 语句。为了达到我的目的,我经常使用 2 SELECT 语句,比如这个:

con.Open();
string cmdstr = "SELECT UNIQUE FROM recipeList WHERE `stock_ID` = '" + stockIDTxtbox.Text + "'";
cmd = new MySqlCommand(cmdstr, con);
dr = cmd.ExecuteReader();
string menuID = "";
while (dr.Read())
{
   menuID = (dr["menu_ID"].ToString());
}
dr.Close();
con.Close();

con.Open();
string cmdstr = "SELECT `menu_name` FROM recipedb WHERE `menu_ID` = '" + menuID + "'";
cmd = new MySqlCommand(cmdstr, con);
dr = cmd.ExecuteReader();
string menuName = "";
while (dr.Read())
{
    menuName = (dr["menu_name"].ToString());
    this.listView1.Items.Add(new ListViewItem(new string[]{ menuName  }))
}
dr.Close();
con.Close();

任何想法如何缩短这个?oO

4

3 回答 3

1

好久没写SQL了,不过应该是join吧,如下:

select rdb.menu_name
from recipedb rdb, 
     recipelist rl
where rl.menu_ID = rdb.menu_ID and
      rl.stock_ID = * insert your stockIDTxtbox.Text in here without the stars *
于 2012-12-21T03:28:48.110 回答
1

您可以将 SQL 编写为:

 string queryString =  "SELECT r2.menu_name "+
                       "FROM recipelist rl "+ 
                          "INNER JOIN recipedb r2 "+
                          "ON rl.menu_ID = r2.menu_ID "+
                       "WHERE r1.stock_ID = '" + stockIDTxtbox.Text + "'";
于 2012-12-21T03:33:07.873 回答
1

这是一个简短的:

con.Open();
string cmdstr = "SELECT menu_name FROM recipedb WHERE menu_ID in (SELECT UNIQUE menu_id from recipeList WHERE stock_ID = '" + stockIDTxtbox.Text + "')";
cmd = new MySqlCommand(cmdstr, con);
dr = cmd.ExecuteReader();
string menuName = "";
while (dr.Read())
{
   menuName = (dr["menu_name"].ToString());
   this.listView1.Items.Add(new ListViewItem(new string[]{ menuName  }))
}
dr.Close();
con.Close();
于 2012-12-21T03:35:54.777 回答