2016-04-06 33 views
0

行MySQL查詢分組這是極有可能這已經回答了其他地方,我無法找到任何東西,所以如果你可以鏈接到另一篇文章,這將是王牌。按日期和檢索VARCHAR值上

所以我有一個MySQL數據庫(我沒有設計,我不能改變太多,添加一列是不可能的),其中列出了除其他門票和支付。我已經編寫了一個查詢,它將按月份對Year進行分組,並對每個月的付款總額進行分組。還有另一列可以有多個引用,它們需要是varchar,每個引用都包含在DB中的雙引號中(我有一種感覺,這有點不安全,不是我的決定,我不能真的改變它),每個引用用逗號分隔(如果有多個引用)。

你可能已經制定了我想要做的,我想按日期分組的所有引用。如果事實上,我甚至不需要知道實際的參考數字是什麼,我只想計算每月逐項列舉的參考數(即票數)。可以假定至少會有一個引用。在前端,我要麼計算逗號並添加一個,要麼用逗號爆炸,並計算適合滿手行的數組(在一行中很少有超過4張票),但是這會形成報告整個數據庫我希望它更高效。

我沒有任何代碼後(我不是找人來爲我寫出來,只是點我朝着正確的方向,也許有一個方法我我忘了?),我」我真的不知道從哪裏開始,所有其他類似這樣的帖子都是關於分組和總數(我也需要這樣做,但我對該部分還可以),但沒有關於如何使用字符串來完成它。 SUM(),但帶有一個字符串。

在此先感謝

編輯:

我一直在問表結構,我不能讓在DB的時刻,但給你一個想法......

ID (指數), 時間戳(在DB-每天創建時該表是截短的和新的CSV導入), 打開(日期,將從時間戳不同,這是我想要由組列), 閉合(另一個日期,在這種情況下無關), 總計(十進制,不是rel在這個問題上的前衛,但我也按月總計), 門票(我想要算的一張,兩張門票看起來像「foo1234」,「baa5678」,沒有圖案。相同的前綴)的門票要麼)

還有其他的像客戶端名稱,但他們無關緊要在這種情況下

它不與任何其他表作爲其唯一的功能是接收的CSV和顯示信息在頁面上(可以選擇再次導出),表格不能從前端修改。我所做的只是編寫一份總結報告。

就像我說的,我不期待任何人的任何代碼或一步的指導一步,只是一些建議或相關的SO職位。這看起來似乎應該是相當簡單的使用CONCAT_WS

+0

請告訴我們的你的表的例子(不需要是真實的數據),但我們至少需要結構。 –

回答

1

這是很容易解決的,閱讀更多關於它here

CONCAT_WS將串聯與你選擇了一個分隔符的字符串,你的情況,你會用逗號做這個:CONCAT_WS(',',string_column)

這會給你一個用逗號分隔的所有字符串。如果你真的需要比你可以用這個繼續計數:How to count items in comma separated list MySQL

使用這將給:

LENGTH(CONCAT_WS(',',string_column)) - LENGTH(REPLACE(CONCAT_WS(',',string_column), ',', ''))+1 

+1,因爲你需要有一個更多的結果比你有逗號

+0

是的!謝謝,那正是我以後的樣子。因爲我已經嘗試過CONCAT,所以我對自己有些惱火。「但是嘿! – LoonyToadQuack

+0

:)沒問題,高興幫忙! – Jester