Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Funktion mit vorhandener Spalte füllen

Dieses Thema im Forum "PostgreSQL" wurde erstellt von Kampfgummibaerlie, 18 Mai 2017.

  1. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    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 ;)
     
  2. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    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
     
  3. Dukel

    Dukel Datenbank-Guru

    Wieso hat man männliche und weibliche Kunden in unterschiedlichen Tabellen? Hier macht man eine Spalte "Geschlecht".
     
  4. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    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: 18 Mai 2017
  5. Dukel

    Dukel Datenbank-Guru

    Man kann Abfragen auch filtern.
     
  6. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    war mir klar ;)

    Select
    From
    Where (filtern)
    Limit

    Wurde mir schonmal gesagt ;D

    Aber danke :)
     
  7. Dukel

    Dukel Datenbank-Guru

    Wozu dann zwei Tabellen für die gleichen Informationen?
     
  8. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    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.
     
  9. Dukel

    Dukel Datenbank-Guru

    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.
     
  10. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    warum sollte ich das Geschlecht einspeichern, wenn das eine Tabelle für männliche Kunden wäre?

    Aber ja, will heute nichtmehr streiten ;)
     
  11. Dukel

    Dukel Datenbank-Guru

    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.
     
  12. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    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....
     
  13. Dukel

    Dukel Datenbank-Guru

    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.
     
  14. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    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 ;)
     
  15. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    Falls erlaubt, ich habe da eine Antwort für den Mann, der anderer Meinung war ;)

    Konzept von referentieller Integrität / Foreign Keys. | Datenbank-Forum

    Ist auch ein Thread von mir, laut dem, weil es bei mir an Merkfähigkeit noch happert, kopier ich die Varianten hier auch rein:
    LW = Löschweitergabe
    ÄW = Änderungsweitergabe
    RI = referentielle Integrität

    Ich glaube, du brauchst die ÄW ;)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden