Forums Neueste Beiträge
 

Select einer Tabelle mitteln einer zweiten Tabelle sortieren

23/09/2008 - 15:13 von Harry Schmidt | Report spam
Hallo ich bin ziemlicher Anfànger in SQL und habe eine Frage.

Man kann bei MSSQL die Ergebnisse einer Abfrage (Select) einer Tabelle
zb nach dem Datum sortieren lassen.
Aber was ist, wenn das Datum dazu in einer zweiten Tabelle steht?
Ausserdem dürfen nur bestimmte Eintràge der zweiten Tabelle verwendet
werden.
Die Verküpfung der beiden Tabellen besteht durch eine einheitliche ID.

Konkret sieht es so aus:

1. Tabelle 'medien' hat die Spalte 'mediennr' und weitere Felder, die
aber für die Sortierung nicht relevant sind. Diese Tabelle soll
umgekehrt chronologisch sortiert ausgegeben werden.

2. Tabelle 'history' hat die Spalte 'idnr', die mit der Spalte
'mediennr' aus der Tabelle 'medien' korrospondiert. Für die Sortierung
sollen aber nur die Eintràge verwendet werden, die in den Spalten
'tabelle' den Wert 'MEDIEN' und in der Spalte 'upd' den Wert 'N' haben.
Das relevante Datum befindet sich dann in der Spalte 'upddate'.

Frage: wie müsste die entsprechende SQL-Abfrage aussehen?

vielleicht könnte dies so aussehen?

SELECT * FROM medien, history ORDER BY (SELECT history.upddate WHERE
medien.mediennr = history.idnr AND history.tabelle = 'MEDIEN' AND
history.upd = 'N') DESC

Das zweite SELECT-Kommando soll eine zusàtzliche Spalte erzeugen, über
die ich dann sortieren kann.


Schönen Dank schon einmal im voraus!

Harry
 

Lesen sie die antworten

#1 Jürgen Volke
23/09/2008 - 15:36 | Warnen spam
hallo Harry

Man kann bei MSSQL die Ergebnisse einer Abfrage (Select) einer Tabelle zb
nach dem Datum sortieren lassen.
Aber was ist, wenn das Datum dazu in einer zweiten Tabelle steht?
Ausserdem dürfen nur bestimmte Eintràge der zweiten Tabelle verwendet
werden.
Die Verküpfung der beiden Tabellen besteht durch eine einheitliche ID.

Konkret sieht es so aus:

1. Tabelle 'medien' hat die Spalte 'mediennr' und weitere Felder, die
aber für die Sortierung nicht relevant sind. Diese Tabelle soll umgekehrt
chronologisch sortiert ausgegeben werden.

2. Tabelle 'history' hat die Spalte 'idnr', die mit der Spalte 'mediennr'
aus der Tabelle 'medien' korrospondiert. Für die Sortierung sollen aber
nur die Eintràge verwendet werden, die in den Spalten 'tabelle' den Wert
'MEDIEN' und in der Spalte 'upd' den Wert 'N' haben. Das relevante Datum
befindet sich dann in der Spalte 'upddate'.

Frage: wie müsste die entsprechende SQL-Abfrage aussehen?

vielleicht könnte dies so aussehen?

SELECT * FROM medien, history ORDER BY (SELECT history.upddate WHERE
medien.mediennr = history.idnr AND history.tabelle = 'MEDIEN' AND
history.upd = 'N') DESC

Das zweite SELECT-Kommando soll eine zusàtzliche Spalte erzeugen, über
die ich dann sortieren kann.



du willst wohl:

SELECT * FROM medien M inner join
(SELECT * FROM history
WHERE upd = 'N'AND tabelle = 'MEDIEN'
ORDER BY upddate DESC ) X ON
M.mediennr = X.idnr

HTH Jürgen

Ähnliche fragen