Funktion mit vorhandener Spalte füllen

Kampfgummibaerlie

Datenbank-Guru
Beiträge
728
Code für die Funktion abrechnung:

Code:
SELECT EXTRACT(EPOCH FROM ((((upper(x) - lower(x))/60))/10)*2)

Das füllen der Funktion mit einer vorhandenen Spalte:

Code:
select abrechnung(mietzeit)
from vermietungen

Erklärung der Begriffe:
abrechnung ist eine Funktion, die die Kosten "am Ende" berechnet.
mietzeit ist eine Spalte des Typs Timestamprange, die die 2 Werte darin hat.
vermietungen ist die Tabelle, in der de Spalte mietzet ist.

Ergebnisse (bei mir) stimmen mit händisch nachgerechneten Werten überein ;)

Was mich jetzt interessieren würde:
Kann man den oben stehenden Code irgendwie als "stored procedure" speichern?

damit man das in etwa sieht, wenn man eingibt:
select Rechnungen, und die Procedure Rechnungen ist der oben stehende Code.

Anbei verstehe ich jetzt auch, warum es die "Limit" Funktion gibt (wie ich die optimal einbauen kann, dass er die letzten (es stehen in Summe 7 mietbare Maschinen oder so herum), das Limit eben den vorhandenen Maschinen entspricht. - Die Maschinen ist ein ziemlich fixer Wert, weil nicht mehr ins Cafe passen ^^

Ich werde weiterforschen, und falls ich auf eine Lösung komme, wie man das als stored Procedure abspeichert, schreibe ich das in den nächsten Post ;)
 
Werbung:
Anbei habe ich dazu eine Frage:

Wie sinnvoll wäre es, die einzelnen Spalten in den entsprechenden Tabellen so zu vergeben, dass sie auch den Tabellennamen integriert haben?

Weil, Falls da zB irgendwas ist mit Geburtstagen des entsprechenden Monats finden, wobei aber männl. und weibl. Kunden in 2 verschiedenen Tabellen sind, oder so,
dass die eine Spalte "männlich_geburtstage", und die andere "weiblich_geburtstage" heißt, damt man aus beiden Tabellen die Geburtstage filtern kann, irgendwie (ich glaube, es geht) so:

select männlich_geburtstage, weiblch_geburtstage
from männlche_kunden, weibliche_kunden

Müsste ich gleich mal probieren ;)

Lösung:
Ja, es würde Sinn machen (denke ich), weil aus mehreren Tabellen (auch wenn die Anzeige bei PGAdmin ein wenig kompliziert aussieht) die Werte zu Filtern.

Code:
select Spalte1, Spalte2
from Tabelle1, Tabelle2;

Jetzt fallt mir aus heiterem Himmel nix ein, wo mans brauchen könnte, aber ja, bestimmt irgendwo xD

Irgendwo glaube ich hatte ich mit Akretschmer (oder so) darüber geschrieben, ob man eine Function aufbauen kann, und über eine andere diese eine abrufen.

Das wäre recht sinnvoll, falls man sich die vergangenen durchschnittlichen Monate seit irgendwas berechnen möchte, und aber auch die Jahre/Wochen/Tage/Stunden/Minuten/Sekunden.....

Da brauche ich nur eine Timestamp_Diff, und ich kann diese Timestamp_Diff abrufen, und nenne die weiteren Timestamps einfach, weil die Timestamp_Diff in Sekunden rechnet, Timestamp_Diff_Minuten, Timestamp_Diff Stunden, und so weiter....

Wenn wir schon an Speicherkapazität sparen, dann doch ordentlich xD
 
Wieso hat man männliche und weibliche Kunden in unterschiedlichen Tabellen? Hier macht man eine Spalte "Geschlecht".
 
Du hast (irgenden Land) 2 Kirchen
1 für Frauen, die andere für Männer

Und ich glaube, es würde sich nicht auszahlen, alle Kunden aus der Kirche für Männer in die Kirche für Frauen einzutragen, nur weil du den Geburtstag von allen sehen willst.

Was weiß ich bitte, ich bekomms nur mit, dass das möglich ist ;)

Anbei ist mir aufgefallen, dass man auch mehrere Proceduren in eine Abfrage setzen kann:
select (function1(function2(function3(ColumnY)))
from TabelleX

Das mit mehreren Funktionen ist zB recht praktisch, wenn man in einer Datenbank die x. Wurzel ziehen muss. (4. oder höher)
 
Zuletzt bearbeitet:
Die Information ist ja nicht gleich, wenn eine Frau Schmidt am 5.12. Geburtstag, oder ein Josef Mayer.
Wäre ein komplett anderer Datensatz ;)

Weil vl. die Mitarbeiter an Ort B nichts anschauen dürften von den Datensätzen der Tabelle an Ort A

Und ich denke, dass es auf meine Denkweise der einfachste Weg wäre, bevor wir noch irgendeine Function erstellen, welche wir nur für Ort A, bzw. B freigeben würden.
 
Nicht die gleichen Datensätze sondern die gleichen Spalten. In beiden Tabellen wären ja dann Name, Geburtstdatum und Geschlecht gespeichert.
Es gibt keinen (!) Grund für zwei Tabellen.
 
Bevor man zwei Tabellen mit den selben Spalten erstellt macht man eben keine Tabelle nur für Männliche Kunden sondern für alle Kunden.
 
Noch ein Beispiel, wo es durchaus sinnvoll wäre:

möglichst günstig einkaufen:
1 Tabelle pro Markt (Produkte, Preis, Angebot, ....)

Select *
From Tabelle_Billa, Tabelle_Spar, ....
Where Angebot = true (boolean-Feld)

Und ich würde tippen, es gibt mehrere Fälle, wo man das gebrauchen kann ;)

Du hängst auf einer Tatsache, die ich mitbekommen habe, dass sie möglich ist, und hackst gleich an mir rum, was ich nicht alles für unnötiges Zeug mache ;)

also ja, muss mal Notebook irgendwo anstecken!

Bis heute Abend, oder so....
 
Mein Tipp: Befasse dich einmal mit den Datenbank Grundlagen, bevor du komplexere Dinge machst.

Auch hier ist es sinnlos für jeden Markt eine Tabelle zu erstellen.
Bei 500 Märkten musst du dann 500 Tabellen erstellen. Wenn du dann zusätzlich einen "Marktleiter" speichern willst musst du 500 Tabellen ändern.
 
Aha, und es ist laut Gundlagen verboten, 2 Tabellen mit den selben Spalten zu erstellen?

Und nur so am Rande: Ich glaube, man kann in PostgreSQL kanalisierungen(?) einstellen , sprich wenn du in einer Tabelle den Marktleiter änderst, ändert sich der auch in allen entsprechenden weiteren Tabellen ;)
 
Werbung:
Zurück
Oben