Update ค่าหลายๆแถว ที่มีค่าต่างๆกัน พร้อมๆกัน ใน MYSQL by plug.in
May0
ปัญหา
ต้องการอัพเดต หลายๆแถวใน database ที่แต่ละแถวมีค่าต่างๆกันไป โดยใช้ Query เดียว
เพราะถ้าหากใช้แบบปกติ จะกินทรัพยากรสูงมากต่อการ update 1 ครั้ง
Flow control (IF/CASE) ใน Mysql by plug.in
Nov0
Flow control ใน Mysql
อ้างอิงจาก http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html
คืออะไร? ทำไมต้องใช้?
บางครั้งแม้มันจะง่ายและเร็วกว่า ที่จะทำส่วนคำนวณใน Php ก่อนแล้วค่อยมาทำ Query ใน Mysql แต่ในบางกรณีเล็กๆน้อย หรือบางครั้งที่ต้องการการ Customize โดยไม่ต้องเขียนโค้ดเพิ่ม การเขียน IF/Case เข้าไปใน Mysql ก็สร้างความสะดวกได้มาก
SQL - Query เพื่อทำการจัด Rank ของข้อมูล by plug.in
Jul0
จาก http://www.1keydata.com/sql/sql-rank.html
Table Total_Sales
| Name | Sales |
| John | 10 |
| Jennifer | 15 |
| Stella | 20 |
| Sophia | 40 |
| Greg | 50 |
| Jeff | 20 |
SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales <= a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC;
Result:
| Name | Sales | Sales_Rank |
| Greg | 50 | 1 |
| Sophia | 40 | 2 |
| Stella | 20 | 3 |
| Jeff | 20 | 3 |
| Jennifer | 15 | 5 |
| John | 10 | 6 |
ถ้าอยากให้เรียงลำดับโดยไม่มีข้ามให้แก้เป็น
SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales < a2.Sales or (a1.Sales=a2.Sales and a1.Name >= a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name ASC;
CI : ใช้ Query String กับ CodeIgniter by plug.in
May0
Refer : http://www.askaboutphp.com/tutorials/58/codeigniter-mixing-segment-based-url-with-querystrings.html
Codeigniter ตามปกติจะไม่สามารถใช้งาน URL โดยมีตัวแปน GET (Query String) ได้
หากต้องการให้ใช้งานได้มีสองวิธี
1. Global
ตั้งค่าใน Config.php ตามนี้
$config['uri_protocol'] = “PATH_INFO”;
$config['enable_query_strings'] = TRUE;
2. Local
แบบ global จะมีปัญหาเล็กน้อยเรื่องตัวแปรชื่อ c , m , d ซึ่งเป็น default สำหรับเรียก controller เมื่อ
แบบ local จะตั้งค่าใน Config.php ตามนี้$config['enable_query_strings'] = FALSE;
$config['uri_protocol'] = “PATH_INFO”;
และใน Controller Initialize ให้แทรกบรรทัดนี้
parse_str($_SERVER['QUERY_STRING'],$_GET);
