zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden mysql - Tabelleneinträge durchnummerieren, bei neuem Begriff bei 1 beginnen.

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 04.06.2013, 14:28
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 04.06.2013
Beiträge: 3
null_Ahnung befindet sich auf einem aufstrebenden Ast
Standard mysql - Tabelleneinträge durchnummerieren, bei neuem Begriff bei 1 beginnen.

Hallo,

bitte bei folgendem Problem helfen, danke!
folgende Tabelle:

Name EndeZeit EndeDatum
ACC00 01:00 2013-06-04
ACC00 02:00 2013-06-04
ACC00 03:00 2013-06-04
ACC00 04:00 2013-06-04
ACC01 23:00 2013-06-02
ACC01 23:45 2013-06-03
ACC01 05:30 2013-06-04

Wie kann ich aus dieser Tabelle, als Beispiel, nur die jeweils zwei jüngsten Einträge ausgeben, bzw. die anderen alten Einträge löschen?
Ausgabe:
Name EndeZeit EndeDatum
ACC00 03:00 2013-06-04
ACC00 04:00 2013-06-04
ACC01 23:45 2013-06-03
ACC01 05:30 2013-06-04

Ich wollte erst alles durchnummerieren und dann alles was >= 3 ist löschen. Ich weiß aber nicht wie bei neuem Namen von vorne durchnummeriert werden soll!
SELECT @rownum := @rownum +1 `rank` , `y` . *
FROM (
SELECT @rownum :=0
) AS `z` , logbestand AS `y`
ORDER BY `Name` ASC , CONCAT( EndeDatum, ' ', EndeZeit ) DESC

rank Name EndeZeit EndeDatum
1 ACC00 04:00 2013-06-04
2 ACC00 03:00 2013-06-04
3 ACC00 02:00 2013-06-04
4 ACC00 01:00 2013-06-04
5 ACC01 05:30 2013-06-04 -->> ab hier sollte rank wieder bei 1 beginnen
6 ACC01 23:45 2013-06-03
7 ACC01 23:00 2013-06-02

Geändert von null_Ahnung (04.06.2013 um 14:41 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 04.06.2013, 15:31
?!?
XHTMLforum-Kenner
 
Registriert seit: 20.03.2013
Beiträge: 1.638
explanator sorgt für eine eindrucksvolle Atmosphäreexplanator sorgt für eine eindrucksvolle Atmosphäre
Standard

PHP-Code:
SELECT `Name`, `EndeZeit`, `EndeDatum`
From tabelle
WHERE 1
ORDER BY 
`EndeDatumASC, `EndeZeitDESC
Limit 2 
ungetestet.

Edit:
Das Durchnummerieren machst du bei der Ausgabe mit foreach, wobei du einfach den einen Zähler mit ausgibst.
__________________
"Wieso ist der Code schrott, ich dachte hier seien Profis..."
Aus einem Forum.

Geändert von explanator (04.06.2013 um 15:34 Uhr)
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 05.06.2013, 06:31
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 04.06.2013
Beiträge: 3
null_Ahnung befindet sich auf einem aufstrebenden Ast
Standard

Bei dem angegeben Code, kommen bei 38.067 Zeilen und 4269 unterschiedliche Namen insgesamt nur 2 Zeilen heraus.
Was soll bei der 'WHERE'-Bedingung stehen, 1 kann doch nicht richtig sein?!


Danke schön!
Mit Zitat antworten
  #4 (permalink)  
Alt 05.06.2013, 09:08
?!?
XHTMLforum-Kenner
 
Registriert seit: 20.03.2013
Beiträge: 1.638
explanator sorgt für eine eindrucksvolle Atmosphäreexplanator sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von null_Ahnung Beitrag anzeigen
Bei dem angegeben Code, kommen bei 38.067 Zeilen und 4269 unterschiedliche Namen insgesamt nur 2 Zeilen heraus.
ja das Limit sagt nur 2 Zeilen, wolltest du was anderes und ich habe es nicht richtig verstanden?

Zitat:
Was soll bei der 'WHERE'-Bedingung stehen, 1 kann doch nicht richtig sein?!
Doch ist korrekt, auch das weglassen der WHERE Bedingung wäre richtig. Beides möglich.
__________________
"Wieso ist der Code schrott, ich dachte hier seien Profis..."
Aus einem Forum.
Mit Zitat antworten
  #5 (permalink)  
Alt 05.06.2013, 09:36
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 04.06.2013
Beiträge: 3
null_Ahnung befindet sich auf einem aufstrebenden Ast
Standard Falsch geschrieben/erklärt falsch verstanden, mein Fehler

Wie kann ich aus dieser Tabelle, als Beispiel, nur die jeweils zwei jüngsten Einträge ausgeben, bzw. die anderen alten Einträge löschen?

Ausgabe mit

SELECT `Netzname`, `EndeZeit`, `EndeDatum`
From logbestand WHERE 1
ORDER BY `EndeDatum` DESC, `EndeZeit` DESC
Limit 2

:

Name EndeZeit EndeDatum
ACC01 05:30 2013-06-04
ACC00 04:00 2013-06-04


So will ich es eigentlich haben:
-->>

Wie kann ich aus dieser Tabelle, als Beispiel, pro 'Name' nur die jeweils zwei jüngsten Einträge ausgeben, bzw. die anderen alten Einträge löschen?


Ausgabe:
Name EndeZeit EndeDatum
ACC00 04:00 2013-06-04
ACC00 03:00 2013-06-04
ACC01 05:30 2013-06-04
ACC01 23:45 2013-06-03



Danke schön!
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mysql: Tabelleneinträge zählen mit gleichen Werte in einer Spalte zählen? braindead Serveradministration und serverseitige Scripte 11 11.05.2008 12:47


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:55 Uhr.