iT邦幫忙

0

PHP MYSQL 最大值最小值的資料輸出

  • 分享至 

  • xImage

請問各位先進大大
我有一個解了一整天,還是解不出來!!!請求各位大大相救一下…
我在取資料裡的薪資最大值最小值,輸出時,要把其它欄位也輸出來!

test表格

ID USER MONEY
1 AAA 100
2 BBB 200
3 CCC 300
4 DDD 400

我想要輸出的結果是:
最大值: ID 4 USER DDD MONEY 400
最小值: ID 1 USER AAA MONEY 100

$sql = "SELECT MAX(money),MIN(money) FROM works;";`
我原本只下這樣,但是只能出現
最大值: 400
最小值: 100

請求幫忙解答了,拜託!!!拜託!!!

peggy0808 iT邦新手 5 級 ‧ 2016-08-30 08:32:29 檢舉
更正:FROM為TEST
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
做工仔人!
iT邦大師 1 級 ‧ 2016-08-30 08:56:58
最佳解答

SELECT *
FROM TEST
WHERE money=(SELECT MAX(money) FROM TEST)
OR
money= (SELECT MIN(money) FROM TEST)

在 ms-sql 下試過: ok

資料可能會有多筆(大於2筆) :因為max(money) 或 min(money) 的資料可能不止一筆

看更多先前的回應...收起先前的回應...
peggy0808 iT邦新手 5 級 ‧ 2016-08-30 10:19:18 檢舉

非常感謝大大,一試就行!!!
但是我在echo出資料時,怎麼分成兩個呢???
我想要輸出的結果是:
最高薪資: ID 4 USER DDD MONEY 400
最低薪資: ID 1 USER AAA MONEY 100

但是我下這樣,結果亂亂的感覺!!!
echo "姓名:$row[0]","工號:$row[1],". "薪資:$row[2]";

姓名:DDD ,id:4, 薪資:400 姓名:AAA, ID:1 ,薪資:100

不懂:"結果亂亂"的是指什麼?
希望的顯示方式是:只要一列嗎?
如果是這樣:要參考關於SQL的一些語法問題

peggy0808 iT邦新手 5 級 ‧ 2016-08-30 12:06:06 檢舉

有有有,我解出來了!!!~~~

echo:第<?php echo($key + 1); ?>筆資料,員工姓名:<?php echo $row['name']; ?>,員工工號:<?php echo $row['number']; ?>,員工薪資:<?php echo $row['money']; ?>

感謝大大幫忙!!!

peggy0808 iT邦新手 5 級 ‧ 2016-09-01 16:30:44 檢舉

大大,我可以再請教一個問題嗎,因為我欄位裡,有保留離職人員的資料state=1,我在輸出資料時,可否排除state不是0的資料…

ID	USER	MONEY state
1	AAA	100   0
2	BBB	200    0
3	CCC	300   0
4	DDD	400  1

SELECT name,number,money,stateFROMworksWHERE state='0' and money=(SELECT MAX(money) FROMworks) OR money= (SELECT MIN(money) FROM works)

我用很多種方式,出來的結果都會帶出

最大值 ID:4    USER:DDD    MONEY:400    STATE:1  
最小值 ID:1    USER:AAA     MONEY:100    STATE:0  

正確應該為~~~

最大值 ID:3    USER:CCC    MONEY:300    STATE:0  
最小值 ID:1    USER:AAA     MONEY:100    STATE:0  

STATE 下錯地方.

SELECT name,number,money,state FROM works WHERE money=(SELECT MAX(money) FROM works WHERE  state='0' ) OR money= (SELECT MIN(money) FROM works  WHERE  state='0')

因為要找的是 STATE='0' 的最大值及最小值.
所以 STATE ='0' 必須要放在 (SELECT MAX(MONEY) FROM WORKS ) 中

peggy0808 iT邦新手 5 級 ‧ 2016-09-01 16:50:53 檢舉

大大真的是太利害了我STATE='0' 放前面放後面都出不來…原來是要包在 (SELECT MAX(MONEY) FROM WORKS ) 中…
感激萬分了啊
~

我要發表回答

立即登入回答