2011-01-12 16 views
0

Hallo allerseits und vielen Dank im Voraus. Ich habe ein kleines Problem, das nicht gelöst werden kann, habe ich diese Tabelle, und ich möchte nach Datum und Gruppe sortieren (aber ich zeige nur 1 Zeile pro idCAT)Bestellung und Gruppierung nach Datum in Mysql

| id | idcat | name |  date | 

| 1 | 3  | xx | 2011-01-02 | 

| 2 | 4  | xf | 2011-01-02 | 

| 3 | 3  | cd | 2011-01-01 | 

| 4 | 1  | cg | 2011-01-04 | 

| 5 | 4  | ce | 2011-01-06 | 

möchte bleiben auf diese Weise versuchen, in einer Weise, aber ich kann nicht

| 2 | 4  | xf | 2011-01-02 | 

| 3 | 3  | cd | 2011-01-01 | 

| 4 | 1  | cg | 2011-01-04 | 

Sortieren nach ID


Dankten ein ein Freund der Arbeit.

 
SELECT id, idcat, name, date FROM (SELECT * FROM data ORDER BY idcat, date) m GROUP BY idcat 

+0

Welche Logik verwenden Sie, um die gewünschten Ergebnisse zu erzielen? '2011-01-01' ist nicht in der gleichen Zeile wie' 2, 4, xf' in den Quelldaten. –

+0

Ich verstehe diese Logik nicht? – Alexd2

+0

Entschuldigung, ist 2 | 4 | xf | 2011-01-02 – Alexd2

Antwort

1

Ich kann nicht bequem atm testen, aber versuchen Sie dies:

SELECT FIRST(id), idcat, FIRST(name), FIRST(date) AS d FROM myTable GROUP BY idcat ORDER BY d; 

Beachten Sie die Verwendung des ersten ruft die erste Zeile in der Tabelle mit einem bestimmten idcat zu holen.

+0

Wenn Sie spezifischere Zeilen benötigen, wie zum Beispiel die neuesten in jedem Idcat, müssen Sie ein bisschen mehr tun: SELECT FIRST (id), idcat, FIRST (Name), FIRST (Datum) als d FROM (SELECT * FROM myTable ORDER BY Datum DESC) GROUP BY IDCAT ORDER BY d; Ändern Sie DESC für das älteste Element pro IDCAT in ASC. –

-1

Wenn Sie versuchen, Gruppierungen von der idcat zu bekommen, dann nach Datum sortiert:

select id, idcat, Name, Datum aus myTable Gruppe von idcat nach Datum geordnet;

+0

Es funktioniert nicht, ich habe es versucht, dann bestellt es bringt, idealerweise vor der Bestellung und dann Gruppierung – Alexd2

+0

Sie sollten zuerst Daten nach dem IDcat sortieren und sie wählen die älteste und dann packen es so, dass nur die älteste Rückkehr für jeden Idcat – Alexd2

+0

Hmmm, viel härter, sehe ich dein Dilemma. Wenn ich Sie verstehe, möchten Sie eine Liste der ältesten von jedem Idcat erhalten, sortiert nach Datum. –