第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Mysql 列摘要

Mysql 列摘要

PHP
慕斯709654 2023-07-21 18:31:12
我需要將每一行的列匯總在一起,就像排行榜一樣。外觀如何:Name | country | track 1 | track 2 | track 3 | Total  John     ENG       32        56        24 Peter    POL       45        43        35這里有兩個(gè)問題,我可以使用update 'table' set Total = track 1 + track 2 + track 3但它并不總是 3 個(gè)軌道,從 3 到 20 個(gè)不等。 其次,如果我不在 mysql 中對(duì)其進(jìn)行求和,那么當(dāng)我在 HTML/php 中呈現(xiàn)數(shù)據(jù)時(shí),我將無(wú)法對(duì)它進(jìn)行排序。或者還有其他一些聰明的方法來(lái)構(gòu)建排行榜嗎?
查看完整描述

3 回答

?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊

您需要重新設(shè)計(jì)表格,以包含名稱、國(guó)家/地區(qū)、曲目編號(hào)和數(shù)據(jù)的列。然后,如果有一個(gè)只有 3 個(gè)曲目編號(hào)的寬表,那么您將擁有一個(gè)又高又薄的表格,每行都是給定名稱、國(guó)家/地區(qū)和曲目的數(shù)據(jù)。


然后你可以使用類似的東西來(lái)總結(jié)


 SELECT 

     country, 

     name, 

     sum(data) as total

 FROM trackdata 

 GROUP BY

     name, 

     country

ORDER BY

    sum(data) desc

看看這里我做了一個(gè) SQL 小提琴,顯示它按照你想要的方式工作


然而,根據(jù)您的預(yù)期數(shù)據(jù),您可能真的最好為國(guó)家/地區(qū)建立一個(gè)單獨(dú)的表,其中每個(gè)國(guó)家/地區(qū)名稱僅出現(xiàn)一次(也可能用于名稱)。例如,如果 John 始終與 ENG 關(guān)聯(lián),那么您有一個(gè)重復(fù)組,最好從上表中刪除該關(guān)聯(lián),該關(guān)聯(lián)實(shí)際上與賽道上的分?jǐn)?shù)有關(guān),而不是與誰(shuí)在哪個(gè)國(guó)家/地區(qū)有關(guān),并將其放入自己的表中,然后將其連接到賽道數(shù)據(jù)。


完整的解決方案可能包含下表


**Athlete**

athlete_id

athlete_name

(other data about athletes)


**Country**

country_id

country_name

(other data about countries)


**Track**

Track_id       

Track_number

(other data about tracks)


**country_athlete**   (this joining table allows for the one to many of one country having many athletes

country_athlete_id

country_id

athlete_id


**Times**

country_athlete_id   <--- this identifies a given combination of athlete and country 

track_id             <--- this identifies the track       

data                 <--- this is where you store the actual time

根據(jù)您的數(shù)據(jù),它可能會(huì)變得更加復(fù)雜,例如相同的曲目編號(hào)是否會(huì)出現(xiàn)在不同的國(guó)家/地區(qū)?如果是這樣,那么您需要另一個(gè)連接表來(lái)將一個(gè)軌道號(hào)碼連接到許多國(guó)家。


或者,即使我的 SQL 小提琴示例設(shè)計(jì)很差,創(chuàng)建名稱、國(guó)家/地區(qū)和跟蹤主鍵也可能是件好事,這樣對(duì)于給定的名稱、國(guó)家/地區(qū)和跟蹤組合,您只能擁有一個(gè)“數(shù)據(jù)”值。然而,這個(gè)決定以及將表規(guī)范化為多個(gè)連接表的決定將基于您期望獲得的數(shù)據(jù)。


但無(wú)論哪種方式,只要您說(shuō)“我不知道會(huì)有多少個(gè)軌道”,那么您就應(yīng)該開始思考“每個(gè)軌道的數(shù)據(jù)出現(xiàn)在一行而不是一列中”。


查看完整回答
反對(duì) 回復(fù) 2023-07-21
?
蝴蝶刀刀

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊

我仍然遇到很多問題......但我不認(rèn)為問題出在數(shù)據(jù)庫(kù)上,我認(rèn)為問題更多在于我在網(wǎng)絡(luò)上發(fā)布日期的方式。我能夠獲取所有數(shù)據(jù)等。唯一的問題是我的填寫方式不正確。


What I do now is like: "SELECT * FROM `times` NATURAL JOIN `players`


Then <?php foreach... ?>

<tr>

<td>  <?php echo $row[playerID];?> </td>

<td>  <?php echo $row[Time];?> </td>

....

問題是,使用這個(gè)靜態(tài)表解決方案很難將排序、排序和求和全部放在一起。我四處尋找排行榜,我真的不明白他們是如何通過(guò)活躍訂單等來(lái)構(gòu)建排行榜的。https://www.pgatour.com/leaderboard.html 他們是如何建立這樣的排行榜的?排序和一切。


查看完整回答
反對(duì) 回復(fù) 2023-07-21
?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

就像其他人提到的那樣,您需要重新設(shè)計(jì)數(shù)據(jù)庫(kù)。您的Leaderboard表和新的Tracks表之間需要建立一對(duì)多關(guān)系。這意味著一個(gè)用戶可以擁有?多個(gè)軌道,每個(gè)軌道由軌道表中的一條記錄表示。

這兩個(gè)數(shù)據(jù)庫(kù)應(yīng)該通過(guò)外鍵連接,在本例中它可以是user_id字段。

每次插入或更新新曲目時(shí),排行榜表中的字段total都可以更新,或者您可以有一個(gè)與您想要的查詢類似的查詢。此類查詢?nèi)缦?em>所示:

UPDATE?leaderboard?SET?total?=?(
??SELECT?SUM(track)?FROM?tracks?WHERE?user_id?=?leaderboard.user_id
)
查看完整回答
反對(duì) 回復(fù) 2023-07-21
  • 3 回答
  • 0 關(guān)注
  • 154 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)