 |
sql หาค่ามากสุด ลำดับที่ 3 ครับ มีกี่ record เอาหมดคับ |
|
 |
|
|
 |
 |
|
ยังไม่เห็นภาพครับ ยังไงลองเอา table มาให้ดูครับ
|
 |
 |
 |
 |
Date :
2012-08-16 08:43:49 |
By :
tongspy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คุณออกแบบ databases ยังไงหรือครับ แล้ว code ที่เขียนน่านี้มีไหมครับ
|
 |
 |
 |
 |
Date :
2012-08-16 08:44:30 |
By :
popnakub |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ใช้ limit อ่ะคับมีตัวอื่นอีกไหมคับ
|
 |
 |
 |
 |
Date :
2012-08-16 09:51:24 |
By :
lin2online |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Database อะไรครับ ถึงใช้ LIMIT ไม่ได้
|
 |
 |
 |
 |
Date :
2012-08-16 10:26:42 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันเป็นโจทย์อ่ะคับ mysql ใช้ navicat ครับ โจทย์คือว่าไม่ให้ใช้ limit แต่ให้ ใช้ sub query อะคับ ต้อง group ก่อนเพื่อให้ค่ามันเหลือแถวเดี่ยว โดยเรียงจากมากไปน้อย แต่ทีนี้จะเอาค่าแถวที่ 3 คือ ค่ามากสุดลำดับที่ 3 อ่ะคับ ถ้าใช้ count นับ ค่าที่ได้จากการ group ยังไงอ่ะคับ แล้วจะเอาค่าแถวที่ 3 อ่ะคับ ปวดหัวมาหลายวันล่่ะ
|
 |
 |
 |
 |
Date :
2012-08-16 10:42:56 |
By :
lin2online |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แนวคิด ของผม จะมีการคิวรี่ 2 รอบ
Code (PHP)
//รอบที่ 1
$sql1 = "SELECT * FROM table_name GROUP BY Field_name DESC";
$Query1 = mysql_query($sql1);
$i = 1 ; //กำหนดเพื่ออะไรลอง ทำดู
while($array1 = mysql_fetch_array($Query1 ))
{
if($i=="3"){
$t = $array1['Field_name '] ;
$sql2 = "SELECT * FROM table_name where Field_name =".$t.""; //รอบที่ 2
$Query2 = mysql_query($sql2 );
while($array2 = mysql_fetch_array($Query2 ))
{
print "<tr bgcolor=00CCFF>";
print "<td align = left height=35>".$array2['Field_name ']." </td>";
print "</tr>";
}
}
$i++;
}
mysql_close();
|
ประวัติการแก้ไข 2012-08-16 11:14:55
 |
 |
 |
 |
Date :
2012-08-16 11:14:21 |
By :
apisitp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอเป็นคำสั่ง sql query อ่ะคับ ไม่ใช่ code php คับ
|
ประวัติการแก้ไข 2012-08-16 14:25:38
 |
 |
 |
 |
Date :
2012-08-16 13:50:35 |
By :
lin2online |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอมาก็ไม่มีให้หรอกครับ เขียนไม่เป็น ถ้าได้เฉลยก็มาบอกกันบ้างครับ ...
|
ประวัติการแก้ไข 2012-08-16 14:00:26 2012-08-16 14:02:09
 |
 |
 |
 |
Date :
2012-08-16 13:59:39 |
By :
apisitp |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วคับ อันนี้คือ ค่ามากสุด ลำดับที่ 3 นะคับ โดยไม่ต้องใช้ limit คับ
อยากได้ลำดับไหนก็ใส่ตัวเลขลง ไปที่ where นะคับ
SELECT * from type_cache5 a1 where 2 = (
SELECT count(*) from (SELECT best_perform from type_cache5 GROUP BY best_perform) a2
where a2.best_perform>a1.best_perform
)
|
 |
 |
 |
 |
Date :
2012-08-16 15:59:17 |
By :
lin2online |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|