Function mit automatischem Wahlmodus/teilwweise beliebigem Inhaltteil

Kampfgummibaerlie

Datenbank-Guru
Beiträge
728
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 ^^
 
Werbung:
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 ;)
 
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:
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:
Kann man einer einzelnen Spalte "mehrere" Types geben

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)
 
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?
 
Du mußt nicht unbedingt und zwingend alle Features von PostgreSQL ausnutzen. Das sind sooo viele, da wirst Du nie fertig ...
 
Werbung:
Zurück
Oben