maik87
Goto Top

Kurzschreibweise für SQL-Befehl gesucht

Hallo zusammen,
ich suche eine Kurzschreibweise für folgenden Befehl, da dieser, wie er jetzt dort steht, schwer zu ändern ist:

Select *
from tabelle
where
...
and
(
...
t.feld1 not in (select bla bla bla)
and
t.feld2 not in (select bla bla bla)
and
t.feld3 not in (select bla bla bla)
...)


Der SQL-Befehl in den drei Klammern ist immer der gleiche. Deswegen würd ich ihn gern "zentralisieren".

Gibt es da eine Idee??

Vielen Dank
Maik

Content-Key: 114496

Url: https://administrator.de/contentid/114496

Printed on: April 24, 2024 at 15:04 o'clock

Member: maretz
maretz Apr 23, 2009 at 08:49:44 (UTC)
Goto Top
naja - zuerst würde ich mal das "select * ..." entfernen und die Feldnamen eintragen -> da sonst die wartbarkeit grade bei großen Tabellen extrem leidet... Irgendwann fügt doch mal jemand nen Feld in der Mitte ein -> und schon läuft ggf. dein ganzes Programm worin die Abfrage läuft schon ins Nirvana...

Das andere wäre dann die Frage worin du deine Abfrage schreibst... Direkt im SQL oder wird die aus einem Programm erzeugt? In einem Programm kann man z.B. über einen Array gehen (wenn z.B. deine select bla bla bla etwas wie "select id from benutzer" ist -> dann mache ich die Abfrage einmal und speichere die IDs in einem Array... schon spare ich 3 Abfragen).

Alles weitere hängt vom genauen Tabellenaufbau und den Anforderungen ab...
Member: Maik87
Maik87 Apr 23, 2009 at 08:56:53 (UTC)
Goto Top
Danke für deine schnelle Antwort!!

Zitat von @maretz:
naja - zuerst würde ich mal das "select * ..."
entfernen und die Feldnamen eintragen -> da sonst die wartbarkeit
grade bei großen Tabellen extrem leidet... Irgendwann fügt
doch mal jemand nen Feld in der Mitte ein -> und schon läuft
ggf. dein ganzes Programm worin die Abfrage läuft schon ins
Nirvana...

Ich hatte nur keine Lust die ganze Abfrage zu tippen. face-wink Es sollte nur beispielhaft sein und die Verschachtelung zu erkennen. Im richtigen Projekt habe ich es mit einzelnen Feldnamen.

Das andere wäre dann die Frage worin du deine Abfrage
schreibst... Direkt im SQL oder wird die aus einem Programm erzeugt?

Mit einem SQL-Programm.

In einem Programm kann man z.B. über einen Array gehen (wenn z.B.
deine select bla bla bla etwas wie "select id from benutzer"
ist -> dann mache ich die Abfrage einmal und speichere die IDs in
einem Array... schon spare ich 3 Abfragen).

Mir ist in reinem SQL leider kein Array bekannt!!

Alles weitere hängt vom genauen Tabellenaufbau und den
Anforderungen ab...

Sag mir was du wissen willst und ich sag es dir ;)


Ich nutze übrigens Oracle, falls es wichtig ist!

Danke dir und allen anderen!!
Member: Biber
Biber Apr 23, 2009, updated at Oct 18, 2012 at 16:38:03 (UTC)
Goto Top
Moin Maik87,

auf eine erstaunlich ähnliche Frage hast Du doch schon einem guten zweidrittel Jahr mehrere Antworten bekommen in einem Deiner nach wie vor offenen Beiträge Letzter Datensatz eines bestimmten Kriteriums auslesen.

Ist doch hier die gleiche Mimik.

Grüße
Biber
Member: Netzheimer
Netzheimer May 04, 2009 at 13:48:41 (UTC)
Goto Top
Hallo.

Am besten schreibst du dir eine Funktion, die dir die gewünschten Inhalte von Select blabla zurückgibt. Du kannst an eine Funktion auch Parameter übergeben, wenn dies erforderlich sein sollte.

Die Online-Hilfe unter CREATE FUNCTION bietet hierzu sicher einige Möglichkeiten.