 |
หาค่า Max ของแต่ละ Record ( ย้ำ Record ไม่ใช่ Field) ด้วย MySQL หายังไงครับ |
|
 |
|
|
 |
 |
|
Select p1 From Table Order by p1 DESC Limit 0,1
ได้ บ่อ
|
 |
 |
 |
 |
Date :
2010-06-18 07:57:46 |
By :
kalamell |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อาจจะต้องใช้รันค่ามาเก็บไว้ใน array อ่ะครับแล้วใช้ฟังก์ชั่น max ของ php ช่วย
อ้างอิงจาก http://php.net/manual/en/function.max.php
เวลาคุณ myqsl_fetch_array() ออกมาก็นำแต่ละคอลัมส์มาใส่ไว้ใน array ซักตัวเพื่อหาค่า max
|
 |
 |
 |
 |
Date :
2010-06-18 10:30:48 |
By :
oxygenyoyo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
PURE SQL นะคะด้วย MYSQL ถึงจะเป็น DATABASE อื่นก็คงใช้ได้
ไม่ได้ทำเป็น DYNAMIC SQL ให้นะคะ
============================================================
ใช้ TABLE ชื่อ A1
มี PK FIELD ชื่อ ID
และมี FIELD : P1, P2, P3, ... ,Pn โดยมี data-type และ data-length เหมือนกัน
จะประมาณนี้ค่ะ
หลักการคือ แยกแต่ละ column ออกเป็น table เดี่ยวๆ แต่ยังคง id ไว้เพื่อนำมา dot product
เพื่อหาค่าที่มากที่สุดของแต่ละ field ต่อ 1 record จากนั้นจะแสดงผลค่ามากที่สุด ชื่อ field ที่เก็บค่านั้น
ในแต่ละ record ค่ะ
Code (C#)
SELECT QR_COMP.*
FROM
(
(SELECT id ,'P1' AS `label`, P1 as `value` FROM a1)
UNION
(SELECT id ,'P2' AS `label`, P2 as `value` FROM a1)
UNION
(SELECT id ,'P3' AS `label`, P3 as `value` FROM a1)
) AS QR_COMP ,
(
SELECT id ,MAX(`value`) AS MAX_VALUE
FROM
(
(SELECT id ,'P1' AS `label`, P1 as `value` FROM a1)
UNION
(SELECT id ,'P2' AS `label`, P2 as `value` FROM a1)
UNION
(SELECT id ,'P3' AS `label`, P3 as `value` FROM a1)
) AS QR_INNER
GROUP BY id
) AS QR_MAX
WHERE (QR_COMP.`VALUE` = QR_MAX.MAX_VALUE) AND (QR_COMP.ID = QR_MAX.ID)
ORDER BY id;
ตารางแรก เป็นตารางและค่าที่ใช้ทดสอบ
ส่วนตารางที่ 2 เป็น output ค่ะ

|
 |
 |
 |
 |
Date :
2010-06-18 12:32:08 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณทุกคนที่ตอบนะครับ
เดี๋ยวผมจะลองไปทำดู ได้ผลยังไง เดี๋ยวมาบอกนะครับ
|
 |
 |
 |
 |
Date :
2010-06-20 00:27:22 |
By :
nutt74 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
<?php
// สมมติว่าเชื่อมต่อฐานข้อมูลแล้ว
// สมมติ ว่าตัวแปร $link คือตัวเชื่อมต่อ
$sql = "SELECT MAX(Column_Name) MAXIMUM FROM table_name";
$result = mysqli_query($link, $sql);
$array = mysqli_fetch_array($result);
echo $array;
?>
|
ประวัติการแก้ไข 2017-03-24 21:25:20
 |
 |
 |
 |
Date :
2017-03-24 21:23:11 |
By :
Androidgamer |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|