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

Function mit automatischem Wahlmodus/teilwweise beliebigem Inhaltteil

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

  1. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    Aufgrund dieser Vermietungstabelle bin ich auch am überlegen, wie ich das hinbekommen könnte:

    Ich will den Typ angeben, und nicht die Maschinen_ID, und möchte, dass er automatisch die nächste wählt, welche frei ist. Beispiel: Ich will einen BMW M3 Cabrio, es sind zwei auf Lager, einer vermietet, und ich möchte aber in die Tabelle eintragen "Kunde X", "BMW M3 Cabrio".

    Ich würde auch gerne die "Rückgabetimestamp" irgendwie automatisch regeln, sprich, wenn der BMW M3 Cabrio von Kunde X zurückgebracht wird, brauche ich einfach nur das Nummerntaferl eingeben, und er schreibt von selbst rein, welche Timestamp der Rückgabezeitpunkt war.

    Andere Idee:
    Ich gebe dem BMW M3 Cabrio einfach den Namen "BMW M3 Cabrio - Nummerntaferlkombinaton", und baue eine Function auf, welche mittels (weiß nicht wirklich, wie da eine Funktion aussehen könnte, habe aber schon mehrere geschrieben)

    Code:
    Where Name = SELECT * FROM Autos WHERE name LIKE "AUT-WU%" AND abholzeitpunkt IS NULL
    
    (AUT für Österreich, WU für Wien Umgebung falls man eine internationale Vermietungsfirma ist, und man aber nur wenige Autos zurzeit in Wien Umgebung vermietet hat)

    Werde mich gleich damit spielen, mache nur mal eine Pause ^^
     
  2. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    Code:
    select *
    from kunden
    where kunden_name like ('%'||'tor'||'%'||'au'||'%')
    
    Beispiel des Resultates:
    Falls ein Kunde Victoria Pflaume engetragen ist, wird diese angezeigt.

    Wie ich das in eine Function einbaue, muss ich noch schauen, aber ist auch keine Unmöglichkeit(!) >denke ich<

    Warum?
    Mache ich eigentlich nur zwecks praktischem Anwenden von PostgreSQL ;)
     
  3. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    Eine Frage bezüglich zu einer Methode, die glaube ich in diesen Thread hier passt:

    Kann man irgendwie regeln, dass:
    1.: Die (zum Beispiel) Maschine eingetragen wird, und dann irgendwie mittels 'Maschinennummer'||'Maschinenmodell' herausfiltert, wo die Maschine noch nicht gemietet ist? - bereits halb gelöst
    2.: Die Maschine jedoch, wenn der default-wert "infinity" ist, der default-Wert die Zeit zum entsprechendem Datum ist, zu dem geschlossen wird?

    Werde mich auch selbst damit noch näher auseinander setzen ;)

    Also, um ein praktisches Beispiel zu sagen:
    Maschine "Normal" ist vermietet, hat jedoch die ID 1,
    Maschine "Normal" wird noch einmal gemietet, hat an sich die ID 2, aber ich würde gerne >nur< "Normal" eintragen müssen, und nicht noch extra nachschauen, welche Maschine "Normal" noch frei ist, sondern dass er automatisch de nächste "Normal" wählt, welche eben nicht gemietet ist. Das natürlich nur, solange es eine Maschine "Normal" gibt, die nicht gemietet wird.

    Habe das daweil gelöst mittels "Normal_1", "Normal_2", und so weiter, glaube ich ist in dem Sinne aber auch ein wenig mühsam, immer hin und her zu schauen, und so weiter.

    Wie ihr mich kennt, studiere ich immer gleich ein wenig selbst:
    select maschinen_name||maschinen_id from maschinen

    Bei mir ist das Ergebniss jetzt Normale_11, weil die Maschine die ID 1 hat, und den Namen Normale_1.
     
    Zuletzt bearbeitet: 9 Juni 2017
  4. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    Ein Einfall nebenbei, bevor ich mich ins Bett schmeiße:
    Kann man einer einzelnen Spalte "mehrere" Types geben, sprch eine serial, und aber auch noch einen Text, und wenn man nur "Normal" eingibt, interpretiert er selbst die Zahl dazu, und dann ist das "Normal_1", und wenn ich nochmal "Normal" angebe, heißt die halt wiederum "Normal_2", und so weiter? :/

    Möchte mich hiermit entschuldigen, vl. funktioniert meine bisherige Denkweise ja doch, ich habe das ganze als Unique gemacht, und nicht als Primary Key :/

    Brb ^^

    Klappt vom Ansatz her, also:

    Tabelle erstellen:
    Code:
    create table Maschinen2 (Maschinen_ID smallserial, Maschinen_Name text, Primary Key (Maschinen_Name, Maschinen_ID))
    
    Maschine enfügen (mehrfach):
    Code:
    INSERT INTO public.maschinen2 (maschinen_name)   VALUES ('Normale');
    INSERT INTO public.maschinen2 (maschinen_name)   VALUES ('Normale');
    
     
    Zuletzt bearbeitet: 9 Juni 2017
  5. akretschmer

    akretschmer Datenbank-Guru

    Jein. Man kann sich zusammengesetzte Typen definieren.

    Code:
    test=*# create table mitarbeiter (id int, wer mensch);
    CREATE TABLE
    test=*# insert into mitarbeiter values (1, ('Hans','Mustermann','2000-01-01')::mensch);
    INSERT 0 1
    test=*# select * from mitarbeiter ;
     id |  wer   
    ----+------------------------------
      1 | (Hans,Mustermann,2000-01-01)
    (1 Zeile)
    test=*# select id, (wer).vorname, (wer).nachname, (wer).geburtsdatum from mitarbeiter ;
     id | vorname |  nachname  | geburtsdatum
    ----+---------+------------+--------------
      1 | Hans  | Mustermann | 2000-01-01
    (1 Zeile)
    
     
  6. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    Vor deinen Codes also einen Typen erstellen, ja, aber wie sollte der aussehen?

    Hier ein Beispiel eines Codes fürs Typ erstellen:
    Code:
    CREATE TYPE timestamprange AS range (subtype = timestamp, subtype_diff = timestamp_subtype_diff);
    
    kann man "so einfach" einen Typ mit Integer und Text kombinieren?

    Brb, muss schnell was erledigen ;) also nicht aufregen, falls antwort nicht gleich kommt :D

    Anbei: Ich denke, ich muss auch dazu eine Function erstellen, und so weiter, oder braucht das wiederum nur ein Typ mit spezifizierung auf Range?
     
  7. akretschmer

    akretschmer Datenbank-Guru

    Du mußt nicht unbedingt und zwingend alle Features von PostgreSQL ausnutzen. Das sind sooo viele, da wirst Du nie fertig ...
     
  8. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    Notiz: Neues Lebensziel: Alle Features von PostgreSQL ausnutzen :D
     
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