SQL-Einträge priorisieren?
Halo allerseits,
ich habe folgendes Problem bzw. folgende Aufgabe bei der ich nicht weiterkomme.
Es geht um ein Nachrichten-Blog welchen ich programmieren soll (in php). Dieser ist an eine SQL-Datenbank angebunden. Die Nachrichten werden in verschiedene Kategorien eingeteilt, je nachdem um was für Nachrichten es sich handelt. Eine Kategorie lautet beispielsweise „Wichtig“. Auf der Website sollen die Nachrichten der Kategorie „Wichtig“ stets ganz oben stehen. Gibt es eine Möglichkeit diese Nachrichten in der Datenbank zu priorisieren?
Wäre da für Tipps äußerst dankbar.
Viele Grüße
ich habe folgendes Problem bzw. folgende Aufgabe bei der ich nicht weiterkomme.
Es geht um ein Nachrichten-Blog welchen ich programmieren soll (in php). Dieser ist an eine SQL-Datenbank angebunden. Die Nachrichten werden in verschiedene Kategorien eingeteilt, je nachdem um was für Nachrichten es sich handelt. Eine Kategorie lautet beispielsweise „Wichtig“. Auf der Website sollen die Nachrichten der Kategorie „Wichtig“ stets ganz oben stehen. Gibt es eine Möglichkeit diese Nachrichten in der Datenbank zu priorisieren?
Wäre da für Tipps äußerst dankbar.
Viele Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 665791
Url: https://administrator.de/forum/sql-eintraege-priorisieren-665791.html
Ausgedruckt am: 24.04.2025 um 09:04 Uhr
8 Kommentare
Neuester Kommentar
keine Garantie, daß das funktioniert:
Ohne ORDER BY ist es der DB prinzipiell freigestellt, die Ausgabesortierung selber vorzunehmen. Hier ist es ein HahAggregate, der die Sortierung bestimmt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
edb=*> select * from generate_series(1,10) s union select * from generate_series(20,30)s;
s
----
25
29
4
30
21
3
28
22
20
10
9
7
1
5
2
6
26
27
23
24
8
(21 rows)
edb=*>
Ohne ORDER BY ist es der DB prinzipiell freigestellt, die Ausgabesortierung selber vorzunehmen. Hier ist es ein HahAggregate, der die Sortierung bestimmt:
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
edb=*> explain select * from generate_series(1,10) s union select * from generate_series(20,30)s;
QUERY PLAN
-------------------------------------------------------------------------------------
HashAggregate (cost=0.58..0.79 rows=21 width=4)
Group Key: s.s
-> Append (cost=0.00..0.53 rows=21 width=4)
-> Function Scan on generate_series s (cost=0.00..0.10 rows=10 width=4)
-> Function Scan on generate_series s_1 (cost=0.00..0.11 rows=11 width=4)
(5 rows)
Moin,
ich würde das in normalisierten Tabellen abbilden
Posts: postID, KategorieID .....
Kategorie: KategorieID, Name, Prio
und dann eben
oder optional 2 Abfragen
- eine "oben" mit den Wichtigen Kategorie, eine "unten" ohne die wichtige Kat.
lg,
Slainte
ich würde das in normalisierten Tabellen abbilden
Posts: postID, KategorieID .....
Kategorie: KategorieID, Name, Prio
und dann eben
1
2
3
2
3
Select Posts.* , Kategorie.*
LEFT JOIN Posts.KategorieID on Kategorie.KategorieID
ORDER BY Kategorie.Prio ASC, PostID ASC
oder optional 2 Abfragen
- eine "oben" mit den Wichtigen Kategorie, eine "unten" ohne die wichtige Kat.
lg,
Slainte
Meine Lösung war ein bischen mehr als "ORDER BY" - und funktioniert so auch.
Den rest hat @akretschmer ja schon geschrieben...
Den rest hat @akretschmer ja schon geschrieben...
Zitat von @SlainteMhath:
Meine Lösung war ein bischen mehr als "ORDER BY" - und funktioniert so auch.
Währ auch die schönste Lösung.Meine Lösung war ein bischen mehr als "ORDER BY" - und funktioniert so auch.
Gut man könnte das mit wichtig noch in ne separate Tabelle packen und dort mit Start und Enddatum für die Priorität versehen