Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Order by ? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Order by ?


 
Rookie
20-04-2002, 12:05 
 
Hi everybody,
ich suche einen Befehl mit dem ich aus einer DB die Tabellen ordnen kann an Hand des Datums (also z.B. in welcher Tabelle der letzte Eintrag gemacht worden ist). Aber so das ich also eine kleine Hirachie aufbaue!!!
Hat irgendwer einen Plan???

Danke Rookie

 
Titus
20-04-2002, 12:17 
 
select * from TABELLE order by DATUM desc

http://mysql.com/doc/S/E/SELECT.html

 
Rookie
20-04-2002, 12:33 
 
Damit ordne ich doch nur den Inhalt innerhalb der Tabelle!!! Ich suche aber einen Befehl um die Tabellen unter sich zu ordnen, wobei das davon Abhängen soll wann in welche Tabelle zuletzt eingetragen worden ist!!!
Hoff ich konnte mein Problem diesmal besser veranschaulichen!!

Danke Rookie

 
Titus
20-04-2002, 12:38 
 
aha ... zur Beantwortung der Frage müsstest Du deine Tabellenstruktur mal posten - vor allen Dingen muss das Datum der Eintragung in der Tabelle vermerkt werden.

 
Rookie
20-04-2002, 12:49 
 
Also, die Tabellenstruktur sieht wie folgt aus:

name (varchar(50) not null)
email (varchar(50) not null)
thema (varchar(100)
beitrag (text not null)
datum (datetime not null)

Rookie

 
Titus
20-04-2002, 13:27 
 
d.h. du hast mehrere Tabellen mit der gleichen Struktur?
Dann wäre es sinnvoll, die in eine zusammen zu fassen und mit einem zusätzlichen Parameter für die Kategorisierung zu versehen.
Außerdem sollte jede Tabelle einen Primary Key haben zur eindeutigen Identifikation der Datensätze.
Zusätzlich noch einen Index aufs Datumsfeld, damit läßt sich schneller suchen und sortieren:

create table TABELLE (
ID bigint unsigned auto_increment not null,
KAT int unsigned(10) not null,
name varchar(50) not null,
email varchar(50) not null,
thema varchar(100),
beitrag text not null,
datum datetime not null,
primary key (ID),
key (KAT),
key (datum)
)
dann bekommst du mit select * from TABELLE order by datum desc die neuesten Beiträge, select distinct(KAT) from TABELLE order by datum desc sollte dir die Kategorien in der entsprechenden Reihenfolge liefern.

 
Rookie
20-04-2002, 14:03 
 
Ich bin mir nicht ganz sicher ob ich das jetzt richtig verstanden hab. Meinst du, dass jede Tabelle jetzt dieses Form haben soll und dazu in in einer Tabelle gespeichert sein soll die auch so aussieht, oder soll die eine Tabelle nur das Thema und ein datum enthalten was verändert wird bei einem Neueintrag???

Danke Rookie

I know: Stupidness is no excuse!!! :D

 
Titus
20-04-2002, 14:52 
 
alle Datensätze in eine Tabelle!

 
Rookie
21-04-2002, 13:52 
 
Danke, habs jetzt!!!:rocks:

Rookie

 
Rookie
07-05-2002, 19:06 
 
Ist zwar schon ein wenig her, aber ich habe erst jetzt bemerkt:huep: , dass es doch noch nicht so klappt wie ich mir das vorgestellt hatte:

Ich möchte es schon so haben, dass nach den Kategorien geordnet wird, aber die Reihenfolge bei select distinct(KAT) läuft anders als ich es erwartet hätte. Hier einmal die unterschiedlichen Suchergebnisse:

mysql> select distinct(KAT) from forum order by datum desc;
+-----+
| KAT |
+-----+
| 3 |
| 1 |
| 2 |
+-----+


mysql> select KAT, datum from forum order by datum desc;
+-----+-------------------+
| KAT | datum |
+-----+-------------------+
| 1 | 2001-05-07 18:42:14 |
| 1 | 2001-05-07 18:29:14 |
| 3 | 2001-05-07 18:25:50 |
| 2 | 2001-05-07 14:22:13 |
| 1 | 2001-05-07 14:20:15 |
| 2 | 2001-05-07 14:12:46 |
| 2 | 2001-05-07 14:09:13 |
| 1 | 2001-05-07 14:00:17 |
+-----+-------------------+


Die Korrekte Reihenfolge müsste also 1-3-2 sein und nicht 3-1-2 wie es bei der "distinct(KAT)"-Abfrage ist!

Könnt ihr mir bitte noch einmal helfen??? :rolleyes: Danke

Rookie

 
MelloPie
07-05-2002, 19:21 
 
Ne eben nicht distinct nimmt einen Datensatz aber nicht den unbedingt gewollten.
Du musst wenn dann ein SELECT MAX(DATUM) FROM tbl GROUP BY kat machen

 
Rookie
08-05-2002, 15:22 
 
Aber da bekomme ich die Reihenfolge aber auch nicht so wie ich es gerne hätte. Ich möchte ja, dass die Kategorie in der der neuste Eintrag ist auch als erstes Angegeben wird!
Sprich wenn zwar die Kategorie 5 vor der Kategorie 7 gegründet worden ist, aber in 7 der letzte Eintrag getätigt ist, dann möchte ich die Kategorie 7 auch als erstes aufgelistet bekommen!!!
Auch mit dem "Order by datum desc"-Zusatz bekomme ich nicht das gewünschte Ergebnis!!!

Hier die Daten nochmal:

mysql> select max(datum), KAT from forum group by KAT order by datum desc;
+---------------------+-----+
| max(datum) | KAT |
+---------------------+-----+
| 2001-05-07 18:25:50 | 3 |
| 2001-05-07 18:42:14 | 1 |
| 2001-05-07 14:22:13 | 2 |
+---------------------+-----+

Warum sortiert er in dieser komischen Reihenfolge???
Danke für euer Ausdauer!!!

Rookie

 
goth
08-05-2002, 20:34 
 
Original geschrieben von Rookie
Aber da bekomme ich die Reihenfolge aber auch nicht so wie ich es gerne hätte. Ich möchte ja, dass die Kategorie in der der neuste Eintrag ist auch als erstes Angegeben wird!
Sprich wenn zwar die Kategorie 5 vor der Kategorie 7 gegründet worden ist, aber in 7 der letzte Eintrag getätigt ist, dann möchte ich die Kategorie 7 auch als erstes aufgelistet bekommen!!!
Auch mit dem "Order by datum desc"-Zusatz bekomme ich nicht das gewünschte Ergebnis!!!

Hier die Daten nochmal:

mysql> select max(datum), KAT from forum group by KAT order by datum desc;
+---------------------+-----+
| max(datum) | KAT |
+---------------------+-----+
| 2001-05-07 18:25:50 | 3 |
| 2001-05-07 18:42:14 | 1 |
| 2001-05-07 14:22:13 | 2 |
+---------------------+-----+

Warum sortiert er in dieser komischen Reihenfolge???
Danke für euer Ausdauer!!!

Rookie

Vielleicht einfach mal 'ne Kombination aus beiden ... ;o)

SELECT KAT, MAX(datum) AS max_datum
FROM forum
GROUP BY KAT
ORDER BY max_datum DESC

 
Rookie
09-05-2002, 12:51 
 
:D :D :D :D
Perfecto!!!

Hab's jetzt!!! Vielen Dank für eure Hilfe und eure Geduld!!!!

Rookie :rocks:

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:12 Uhr.