 |
การค้นหาแบบมีเงื่อนไขซ้ำๆหลายหลักแบบนี้จะค้นหาแบบไหนดีครับ |
|
 |
|
|
 |
 |
|
มองภาพไม่ออก ^^"
|
 |
 |
 |
 |
Date :
2014-02-24 09:27:42 |
By :
{Cyberman} |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ภาพใหม่ให้เห็นภาพมากขึ้นครับ T_T จากการค้นหา แม้ในชุดนั้นไม่ได้มีตัวเลขที่ติกทั้งหมด แต่มีตัวเลขที่เลือกอยู่ ซ้ำกันกี่ตัวก็ได้ ผลลัพธ์ก็จะได้แบบตัวอย่างนำมาแสดงครับ
|
 |
 |
 |
 |
Date :
2014-02-24 15:27:25 |
By :
pengbuts |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Substr เอาสามหลักแรกออกแล้ว % like หลักที่เหลือเปรียบเทียบกับตัวเลขที่ระบุเข้ามาทีละตัว เชื่อมด้วยโอปอเรเตอร์ AND ครับ
|
 |
 |
 |
 |
Date :
2014-02-24 15:36:43 |
By :
Meannerss |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จากรูป
- เลือก 2 แล้ว 2 ก็มาหมด
- เลือก 7 แล้ว 7 ก็มาหมด
งั้นแนะนำว่า
- เอา 2 ไป select เจออะไร ได้อะไร พักไว้ก่อน
- เอา 6 ไป select เจออะไร ได้อะไร พักไว้ก่อน
- เอา 7 ไป select เจออะไร ได้อะไร พักไว้ก่อน
แล้วหาทางเทียบค่า ค่าซ้ำเอามาตัวเดียว
คิดลอย ๆ นะ อาจจะไปเสริมได้........
เท่าที่วิเคราะร์ น่าจะเป็นระบบขายเบอร์โทรศัพท์
เมื่อลูกค้าเข้าระบบ ก็จะค้นหาว่าอยากได้เลขอะไร
น่าจะประมาณนั้น
ไม่รู้ถูกหรือเปล่า 555+
|
 |
 |
 |
 |
Date :
2014-02-24 15:40:41 |
By :
apisitp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช่ครับ พอดีอยากจะขายเบอร์มงคลกับเพื่อนแต่อยากพัฒนาเว็บเอง แต่มางงตรงนี้แหละครับ 
หรือมีใครรับเขียนเฉพาะส่วนนี้ไหมครับ ราคาเท่าไรครับ ติดมาหลายวัน ช่วงนี้ป่วยด้วย เบลอไปใหญ่เลย ^^
หากใครรับเขียนส่วนการค้นหาหลายเงื่อนไขอันนี้ทักมาที่เมล์ [email protected] หน่อยนะครับ จะส่งข้อมูลให้ครับ
|
ประวัติการแก้ไข 2014-02-24 15:58:14 2014-02-24 15:57:50
 |
 |
 |
 |
Date :
2014-02-24 15:52:34 |
By :
pengbuts |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ต้องใช้ num1 - num10 เลยครับ
// สมมุติ ตัวแปรที่รับตัวเลขแต่หลักเป็น
<input type="checkbox" name="number[]" value="0" /> 0
<input type="checkbox" name="number[]" value="1" /> 1
....
<input type="checkbox" name="number[]" value="9" /> 9
// เราใช้ foreach ลูปเอาข้อมูลมาคิวรี่
$sql = "";
$lastEle = count($_POST["number"])-1;
foreach($_POST["number"] as $key => $requiredNo){
$sql .= "select * from tb_tel where $requiredNo like concat("%",right(number_tel,7),"%") ";
if($lastEle < $key)
$sql .= " union ";
}
echo $sql; // เอาไปใช้ได้เลย
|
 |
 |
 |
 |
Date :
2014-02-24 16:04:08 |
By :
sakuraei |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
$sql .= "select * from tb_tel where $requiredNo like concat("%",right(number_tel,7),"%") ";
เปลี่ยนเป็น single quote ครับ
$sql .= "select number_tel from tb_tel where $requiredNo like concat('%',right(number_tel,7),'%') ";
|
ประวัติการแก้ไข 2014-02-24 16:10:01
 |
 |
 |
 |
Date :
2014-02-24 16:09:56 |
By :
sakuraei |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณพี่ Unidentifier ครับ ขอลองก่อนนะครับ
|
 |
 |
 |
 |
Date :
2014-02-24 16:17:07 |
By :
pengbuts |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พอผมติกเลือก 3 5 6 9 ได้ค่านี้ออกมาอ่ะครับ
select * from phone_number where 3 like concat('%',right(number_tel,7),'%') select * from phone_number where 5 like concat('%',right(number_tel,7),'%') select * from phone_number where 6 like concat('%',right(number_tel,7),'%') select * from phone_number where 9 like concat('%',right(number_tel,7),'%')
พอเอาไป select หา มันได้เป็นค่าว่างทำไงอ่ะครับ
|
 |
 |
 |
 |
Date :
2014-02-24 17:16:16 |
By :
pengbuts |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สลับกันนิดหน่อยครับ 
14.if($key < $lastEle)
15.$sql .= " union ";
|
 |
 |
 |
 |
Date :
2014-02-24 17:34:10 |
By :
sakuraei |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 11 เขียนโดย : love9713 เมื่อวันที่ 2014-02-24 17:43:11
รายละเอียดของการตอบ ::
เป็นการคิวรี่ที่น่าสนใจดีครับ UNION ALL น่ะเร็วกว่า UNION ครับ
น่าเอาทั้งสองแบบมาทดสอบจับเวลากับปริมาณข้อมูลมากๆดู
Quote:select * from phone_number where 3 like concat('%',right(number_tel,7),'%')
union
select * from phone_number where 5 like concat('%',right(number_tel,7),'%')
union
select * from phone_number where 6 like concat('%',right(number_tel,7),'%')
union
select * from phone_number where 9 like concat('%',right(number_tel,7),'%')
Quote:SELECT DISTINCT a.number_tel
FROM tb_tel a
INNER JOIN (
SELECT '2' AS ct
UNION ALL
SELECT '6'
UNION ALL
SELECT '7'
UNION ALL
SELECT '9'
) b ON a.number_tel LIKE '%' + b.ct + '%'
ลึกล้ำน่าดูครับ...
|
 |
 |
 |
 |
Date :
2014-02-24 18:09:04 |
By :
sakuraei |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตามไม่ทัน ได้แต่ตามมาอ่าน
|
 |
 |
 |
 |
Date :
2014-02-24 19:34:58 |
By :
apisitp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากๆครับ ยังไม่เข้าใจวิธีใช้ เดี๋ยวขอลงก่อนครับ
|
 |
 |
 |
 |
Date :
2014-02-24 22:12:56 |
By :
pengbuts |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|