เราสามารถเก็บการ Left Join เอาใส่ตัวแปรแล้วนำมาใส่แทน ตารางเลยได้ไหม
ทำได้ค่ะ ที่คุณทำคือการ ตัดต่อ string
ขอให้ผลลัพธ์ท้ายสุดเป็น sql statement ที่ถูกต้องก็เพียงพอแล้วค่ะ
โดยปกติ จะแนะนำให้ใช้ stringBuilder ในการเขียน Query เพราะจะให้อ่านง่าย
เข้าใจง่ายและตอน DEBUG ยังได้คุณลักษณะ HUMAN READABLE CODE
และ สะดวกกับการพิจารณา COMMAND ออกเป็นส่วนๆ ด้วย
ในการใช้ SQLCommandTextBuilder นั้นก็แนะนำให้ใช้ Methode AppendLine
แทน Append เพราะจะมีการ Add '\n' หรือ new line charactor ใส่ลงไป
code ที่ได้จะแยกเป็นบรรทัดดูง่ายกว่าติดกันเป็นพืดค่ะ
เช่น ในกรณี QUERY ของคุณ
Code (C#)
System.Text.StringBuilder SQLCommandTextBuilder = new System.Text.StringBuilder() ;
SQLCommandTextBuilder.AppendLine("SELECT COUNT(*) ") ;
SQLCommandTextBuilder.AppendLine("FROM") ;
SQLCommandTextBuilder.AppendLine("(") ;
SQLCommandTextBuilder.AppendLine(" SELECT oredr.idoredr, custom.idcustom, custom") ;
SQLCommandTextBuilder.AppendLine(" FROM oredr") ;
SQLCommandTextBuilder.AppendLine(" LEFT JOIN custom")
SQLCommandTextBuilder.AppendLine(" ON oredr.idcustom=custom.idcustom") ;
SQLCommandTextBuilder.AppendLine(") AS QrPRIME ") ;
SQLCommandTextBuilder.AppendLine("WHERE QrPRIME.customname='"+textboxt1.Text+"'") ;
string cmdStr = SQLCommandTextBuilder.ToString();
// ซึ่งค่าของ cmdStr จะเป็นแบบนี้
// SELECT COUNT(*)
// FROM
// (
// SELECT oredr.idoredr, custom.idcustom, custom
// FROM oredr
// LEFT JOIN custom
// ON oredr.idcustom=custom.idcustom
// ) AS QrPRIME
// WHERE QrPRIME.customname='อะไรสักอยาง'
// ซึ่งจะช่วยในเขียน QUERY ยาวๆ ซับซ้อนได้ง่ายขึ้น (มั้งคะ โดยความเห็นส่วนตัว)
Date :
2010-06-16 18:41:57
By :
blurEyes
โอ้ดีจังเลยตอบไวมากๆ ขอบคุณครับ เรียนที่ไหนเหรอครับ ทำไมเก่งจัง
Date :
2010-06-16 18:49:32
By :
thaic
เรียนที่มหาวิทยาลัยค่ะ ไม่ได้เก่งเลยค่ะ
พยายามฟังที่ อาจารย์สอนให้มากที่สุดเท่านั้นค่ะ
Date :
2010-06-16 19:19:18
By :
blurEyes
Code (C#)
string strjoin = "select scanpeople.IDpeople,scanpeople.IDsick,checkscan.checker from scanpeople left join checkscan on scanpeople.IDsick = checkscan.IDsick";
string strSQQ = "SELECT COUNT(checkscan) FROM ('"+ strjoin +"') WHERE IDpeople='" + maskedTextBox4.Text + "'";
cmd = new SqlCommand(strSQQ, Connaxt);
int intNumRows99 = Convert.ToInt32(cmd.ExecuteScalar());
มันถูกต้องตามหลักไหม ทำไม มัน ERROR
Incorrect syntax near 'select scanpeople.IDpeople,scanpeople.IDsick,checkscan.checker from scanpeople left join checkscan on scanpeople.IDsick = checks'.
Date :
2010-06-19 18:49:57
By :
thaic
string strSQQ = "SELECT COUNT(checkscan) " +
+ " FROM ('"+ strjoin +"') WHERE IDpeople='" + maskedTextBox4.Text + "'";
string strSQQ = "SELECT COUNT(checkscan) "
+ " FROM ("+ strjoin +") WHERE IDpeople='" + maskedTextBox4.Text + "'";
Date :
2010-06-19 18:54:31
By :
blurEyes
Incorrect syntax near the keyword 'WHERE'.
อีกแล้ว อ่ะ
Date :
2010-06-19 19:12:52
By :
thaic
string strSQQ = "SELECT COUNT(checkscan) "
+ " FROM ("+ strjoin +") AS QR_PRIME WHERE IDpeople='" + maskedTextBox4.Text + "'";
Date :
2010-06-19 19:28:48
By :
blurEyes
ERROR Invalid column name 'checkscan'.
สงสัยจะ ซับซ้อนไป คิดก่อนจะเปลี่ยนเป็นยังไงดี
Date :
2010-06-19 19:43:46
By :
thaic
Load balance : Server 01