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 を書いていませんでしたが、それは結合でなければならないので、次のようなものです。

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 に答える