สอบถามเรื่องคำสั่ง SQL ค่ะ [VB2008, SQL2008] รบกวนด้วยนะคะ1.ต้องการ select เพื่อแสดงข้อมูลการบริการและราคา
รบกวนด้วยนะคะ
1.ต้องการ select เพื่อแสดงข้อมูลการบริการและราคา ที่ตรงกับข้อมูลสัตว์เลี้ยงที่มารับบริการ โดยมีเงื่อนไขคือ
1.1.บริการที่แสดงต้องเป็นบริการตาม ประเภท สัตว์เลี้ยงตัวนั้นเท่านั้น ในที่นี่ จะเป็น สุนัขหรือแมว นะคะ
1.2.บริการที่แสดงต้องเป็นบริการตาม เพศ ของสัตว์เลี้ยงตัวนั้นเท่านั้น
1.3.บริการที่แสดงต้องเป็นบริการตาม น้ำหนัก ของสัตว์เลี้ยงตัวนั้นเท่านั้น
ซึ่ง rate ราคาจะขึ้นอยู่กับน้ำหนักและกวางเก็บค่าน้ำหนัก Wmin กับ Wmax เป็น Float นะคะ
Wmin คือน้ำหนักขั้นต่ำ
Wmax คือน้ำหนักไม่เกิน
ในส่วนของข้อ 1-2 กวางทำได้แล้วค่ะ
แต่เมื่อเพิ่มเงื่อนไขข้อที่ 3 ไป ก็ไม่มีข้อมูลใด ๆ แสดงขึ้นเลย (ไม่มี error ใด ๆ แจ้งเลยค่ะ)
จากที่ลองศึกษาและทำตาม https://www.thaicreate.com/tutorial/sql-between.html ก็ยังทำไม่ได้
รูปแบบคำสั่ง SQL ตอนนี้ที่ใช้ BETWEEN คือ
Code (VB.NET)
Dim st As String = "select ServID,ServName,STypeCode,ServPrice from Service,service_price where ForType like '%" & lb_TypePet.Text & "%' and ForSex like '%" & lb_Sex.Text & "%' and ServCode = ServID and '" & CDbl(lb_Weight.Text) & "' BETWEEN 'Wmin' AND 'Wmax'"
และลองแบบไม่ convert lb_weight.text แล้วก็ไม่ได้ค่ะ
2.ต้องการแสดงข้อมูลบริการทั้งหมดที่มีราคาน้อยที่สุดเพียง record เดียวต่อ 1 ID
รูปค่ะ
จะเห็นได้ว่า มันโชว์ทุกราคาที่มีเลยค่ะ คำสั่งส่วนนี้ค่ะ
Code (VB.NET)
st = "select ServID,ServName,ForType,ForSex,STypeCode,SysCode,ServPrice from Service,Service_Price where ServID = ServCode order by ServID"
รบกวนด้วยนะคะ ทุกท่าน ขอบคุณมากๆ ค่ะ
หากข้อมูลไม่เพียงพอ รบกวนแจ้งด้วยนะคะ กวางจะได้รีบจัดการให้เรียบร้อย ค่ะTag : - - - -
Date :
2010-02-08 23:39:55
By :
Kwang196
View :
2616
Reply :
11
น้องกวางต้อง เอา table มาให้พี่ดูว่า table Service , Service_Price เก็บ fields อะไรบ้าง
ไม่อย่างนั้นพี่ก็ select Query ให้ไม่ถูกจ้า
ดูจาก "where ServID = ServCode" มันก็พอจะเดาได้ ว่ามันจะ select ออกมาทุก rows อยู่แล้วเนี้ย เงื่อนไข where ของน้องไม่พอจ๊ะ
Date :
2010-02-09 08:32:23
By :
numenoy
รู้ว่าไม่ทันการแล้ว แต่อยากแนะนำว่า
ในการ query ข้อมูล ถ้าไม่จำเป็นจริงๆ ไม่ควรใช้ like ควรออกแบบฐานข้อมูลให้สามารถให้ key id ในการ query ข้อมูลจะดีกว่า
การใช้ text มา query
Date :
2010-02-09 09:17:50
By :
tungman
อยากทราบ ServCode ของ Table Service_Price นะ
ว่ามีการกำหนดยังไง ยกตัวอย่างเช่น SV0009 นะ เพราะเท่าที่ดูคำสั่ง
select ServID,ServName,ForType,ForSex,STypeCode,SysCode,ServPrice from Service,Service_Price where ServID = ServCode order by ServID
นี้ แล้วมันโชว์มาหมดเป็นเพราะว่า
มีการซ้ำกันของข้อมูลนะ
ServCode เป็น Uni หรือป่าว
Date :
2010-02-09 09:45:01
By :
taobsd
พี่ numenoy ค่ะ เดี๋ยวกวางจะ capture database ให้นะคะ
พี่ tungman ค่ะ คือกวางใช้มาเปรียบเทียบประเภทสัตว์เลี้ยงกับเพศอ่ะคะ ถ้าไม่ใช้ like รบกวนแนะกวางด้วยนะคะ
คุณ TAOBSD ค่ะ ตัว ServCode .ในตาราง Service_Price ไม่เป็น Uni ค่ะ เพราะว่า ในการบริการหนึ่งบริการมีหลายราคาอะคะ
รบกวนด้วยนะคะ
Date :
2010-02-09 10:58:43
By :
Kwang196
ปัญหาข้อ 2ใช้ Group by ServID สิครับ
Code (VB.NET)
st = "SELECT ServID,ServName,ForType,ForSex,STypeCode,SysCode,MIN(ServPrice) from Service,Service_Price WHERE ServID = ServCode GROUP BY ServID"
Date :
2010-02-09 11:01:52
By :
Jabacco
ไม่ทราบว่าได้หรือป่าวครับ ตอบช้าไปนิดเดียวไม่งั้นคุณกวางได้เอาไปลองดูแล้ว ส่วน Codeตัวแรกผมอยากทราบว่า Wmax กับ Wmin ของคุณกวางเอามาจากไหนเหรอครับ ถ้าเป็นของ
ตารางอื่นผมว่าไป SELECT มาก่อนแล้วยัดเข้าตัดแปร 2 ตัวของ VB แล้วนำมา SELECT ตาม Code ของคุณกวางดูนะครับ อยากช่วยแต่ผมไม่เขียน VB อ่ะครับ
Date :
2010-02-09 11:07:30
By :
Jabacco
ดู SQL Query แล้ว คาดว่า
SELECT
ServID,ServName,STypeCode,ServPrice
FROM
Service,service_price
WHERE
ForType like '%" & lb_TypePet.Text & "%'
AND
ForSex like '%" & lb_Sex.Text & "%'
AND
ServCode = ServID
AND
'" & CDbl(lb_Weight.Text) & "' <<< ไม่ต้องใส่ ' นะจ๊ะ แล้วก็ CDbl(lb_Weight.Text) อันนี้ ต้องเป็นชื่อ Field Table
BETWEEN
'Wmin' <<< อันนี้ต้องเป็นค่า เช่น 10 กิโลกรัม ก็ใส่ 10
AND
'Wmax'" <<< อันนี้ต้องเป็นค่าเช่นกัน เช่น 25 กิโลกรัม ก็ใส่ 25
น้องควรแยกคำสงวนใน SQL เป็นตัวพิมพ์ใหญ่นะ จะได้ไม่งงเอง อ่าน code ง่าย เข้าใจง่าย แล้วมันจะติดตัวน้องไปตลอด ไปใช้ในอนาคต
Date :
2010-02-09 11:14:47
By :
numenoy
ตอนนี้ในปัญหาข้อแรก กวางทำได้แล้วค่ะรูปแบบคำสั่งดังนี้ค่า
Code (VB.NET)
Dim st As String = "select ServID,ServName,ServPrice,STypeCode from Service,service_price where ForType like '%" & lb_TypePet.Text & "%' and ForSex like '%" & lb_Sex.Text & "%' and ServCode = ServID and Wmin <= " & CDbl(lb_Weight.Text) & " and '" & CDbl(lb_Weight.Text) & "' <= Wmax"
แต่ข้อ 2 ยังติดอยู่เลยค่ะ T^T
Date :
2010-02-09 22:57:21
By :
Kwang196
Load balance : Server 03