2012-01-22 6 views
2

を選択:のMySQL:D</p> <p><strong>まず、コンテキストのビット:</strong></p> <p>次の表とデータを使用して、私はこれは私に頭痛を与えてきた、あなたは私を助けることができることを願っています命じ結果から

:私がやりたいLKE何

+-------------+---------+-------------+ 
| host_name | service | last_change | 
+-------------+---------+-------------+ 
| test.com | PING | 1327004398 | 
| test.com | HTTP | 1327004536 | 
| test.com | MYSQL | 1327004392 | 
| test2.com | PING | 1327127720 | 
| test2.com | HTTP | 1327004391 | 
| test3.com | PING | 1327213842 | 
| test4.com | PING | 1327004368 | 
+-------------+---------+-------------+ 

は、行の右の量をまたがるhost_nameのセル、そのようなビットを持つテーブルにこれをプリントアウトすることです

私はすでに、このようなクエリを使用して、これを行うことができる午前:

SELECT 
    host_name, 
    group_concat(service SEPARATOR '|') as service, 
    group_concat(last_change SEPARATOR '|') as last_change,  

FROM table 

GROUP BY host_name 

そして(パイプが見つかった場所の結果を爆発)、いくつかの操作を行うことで。

の問題は、私が持っている:

私は同じことを行うが、LAST_CHANGEに基づいて結果をソートしたいと思います。私は次のことを試みました:

SELECT 
    host_name, 
    group_concat(service SEPARATOR '|') as service, 
    group_concat(last_change SEPARATOR '|') as last_change,  

FROM 
(
    SELECT * FROM table ORDER BY last_change DESC 
) as tmp_table 

GROUP BY host_name 

しかし、それは動作していないようです。 DESCをASCに変更しても、私が得た結果は変更されません。

結果を順序付けるサブクエリを単独で実行すると、結果がhost_nameでグループ化されていないことを除いて、期待どおりの結果が得られます(明らかにgroup_concatとgroup by文がないためです)。

アイデア?

私はそれをたくさんいただきありがとうございます。

+1

これは本当にの目的ではありません(私)SQL。 MySQLはデータを格納することを意図しています。外部の言語で表示する必要があります。あなたはPHP、C#、java ...でこれをやっても問題ありませんが、SQL-adeptの興味深い教科書です] – Konerak

答えて

0

あなたがここで何をしようとしているのか正確にはわかりませんでした。グループ内の結果を注文するか、結果セット全体を欲しいですか? 最初のケースのためにこれを試してみてください:

SELECT 
    host_name, 
    group_concat(service ORDER BY last_change DESC SEPARATOR '|') as service, 
    group_concat(last_change ORDER BY last_change DESC SEPARATOR '|') as last_change 
FROM table 
GROUP BY host_name 

そして、この:

SELECT 
    host_name, 
    group_concat(service SEPARATOR '|') as service, 
    group_concat(last_change SEPARATOR '|') as last_change 
FROM table 
GROUP BY host_name 
ORDER BY table.last_change 
+0

私は各グループの中で結果を得ようとしています。 – mexicanpsycho

+0

私は2番目のクエリを試してみましたので、ほとんどそのトリックを行うようです。彼らはほぼ(!?)正しくソートされています、それは変です。私はそれに取り組もうとします。ありがとう! – mexicanpsycho

+0

ちょうど2番目の解決策がうまくいってくれたと言いたいと思っています。ありがとう! – mexicanpsycho

0

指定BY ORDERがGROUP_CONCATパラメータであり:

SELECT 
    host_name, 
    group_concat(service SEPARATOR '|') as service, 
    group_concat(last_change ORDER BY last_change SEPARATOR '|') as last_change,  

FROM table 

GROUP BY host_name 
+0

チップをありがとう、私は試しましたが、結果に影響を与えていないようです。私はORDER BY last_change DESCとASCを入れてみましたが、結果はまったく同じでした。 – mexicanpsycho

関連する問題

 関連する問題