簡體   English   中英

使用 MySQL 在選擇/查看時翻轉表格內容?

[英]Flip table content on select/view with MySQL?

我是絕對的 DB/MySQL 初學者,所以我不確定我是否在問正確的問題,但我想試一試。

我為播客設置了 Wordpress 頁面,該頁面按日期計算其 MySQL 數據庫中的下載量。 為了跟蹤下載,我設法構建了一個如下所示的 VIEW:

+-----------+-------------+-------+--------------+-------------+--------------+
| EpisodeID | ReleaseDate | Title | Downloads24h | Downloads7d | Downloads14d |
+-----------+-------------+-------+--------------+-------------+--------------+
| 88        | 2018/01/01  | E01   | 83           | 146         | 207          |
| 124       | 2018/01/15  | E02   | 50           | 92          | 156          |
| 172       | 2018/02/15  | E03   | 71           | 100         | 186          |
| 303       | 2020/03/15  | E04   | 92           | 183         | 328          |
+-----------+-------------+-------+--------------+-------------+--------------+

因為我還想有一些很酷的圖表,所以我在我的服務器上設置了 ChartJS 並嘗試使用我的 VIEW 中的數據,但不幸的是它要求列中的數據。 這意味着當我從 php 端獲取我的數據時,我只能 select 假設 Downloads24h 在折線圖中以 [83,50,71,92] 結尾,這顯然沒有意義。

所以我需要做的是以某種方式將桌子翻轉成這樣的東西:

+--------------+-----+-----+-----+-----+
| Title        | E01 | E02 | E03 | E04 |
+--------------+-----+-----+-----+-----+
| Downloads24h | 83  | 50  | 71  | 92  |
| Downloads7d  | 146 | 92  | 100 | 183 |
| Downloads14d | 207 | 156 | 186 | 328 |
+--------------+-----+-----+-----+-----+

正如你所看到的,我什至不依賴每集的 ID 和發布日期,因為我只需要用折線圖來可視化這些數字。 我正在考慮另一個需要動態的視圖,因為還有更多劇集。 在實際表中,到目前為止已經超過 25 集,但為了簡單起見,我將其淡化了。

我希望有一個我不知道的超級簡單的解決方案,甚至可能在 php 方面。 我目前正在做的事情如下:

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$Title= '';
$Downloads24H = '';
$Downloads7d = '';
$Downloads14d = '';

$sql = "SELECT * FROM `DSI_CAST_STATS_EPISODELIST`";
$result = mysqli_query($conn, $sql);


while ($row = mysqli_fetch_array($result)){
    
$Title= $Title. '"'. $row['Title'].'",';
$Downloads24H = $Downloads24H . '"'. $row['Downloads24H'].'",';
$Downloads7d  = $Downloads7d  . '"'. $row['Downloads7d'].'",';
$Downloads14d = $Downloads14d . '"'. $row['Downloads14d'].'",';
}


$Title= trim($Title,",");
$Downloads24H = trim($Downloads24H,",");
$Downloads7d  = trim($Downloads7d,",");
$Downloads14d = trim($Downloads14d,",");

?>

它有效,但正如我之前所說,我選擇了錯誤的數據集。 也許你們中的任何一個魔術師都知道如何輕松解決整個問題。 我將不勝感激任何提示、技巧或解決方案! 提前致謝!

您可以使用下一個代碼來聚合選定的數據:

$sql = "SELECT * FROM DSI_CAST_STATS_EPISODELIST;";
$result = mysqli_query($conn, $sql);

$data = [
    'Title' => [],
    'Downloads24h' => [],
    'Downloads7d' => [],
    'Downloads14D' => []
];

while ($row = mysqli_fetch_array($result)) {
    $data['Title'][] = $row["Title"];
    $data['Downloads24h'][] = $row["Downloads24h"];
    $data['Downloads7d'][] = $row["Downloads7d"];
    $data['Downloads14d'][] = $row["Downloads14d"];
}

var_export($data);

這里直播 PHP 示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM