2016-08-08 14 views
-3

Ich bin verpflichtet, ein automatisiertes Zeitsystem zu machen. Ich wollte wissen, welche SHIPPING1, SHIPPING viele LKW haben, jeder LKW wird für 30 Minuten am Verladedock sein, E.G. :Oracle SQL Developer

SHIPPING 1: 3 TRUCKS

truck Time 
----- ----- 
truck1 11.00, 
truck2 11.30. 
truck3 12.00 

Wenn ich Zeit für LKW-1 eingegeben, dann 2 LKW danach auf 30 Minuten zugeordnet werden usw.

Ist es möglich, mach die automatische Sequenz dafür?

+2

Willkommen bei SO. Hier findest du etwas über [ask] und wie man ein [mcve] – Aleksej

Antwort

0

Lösung mit Sequenzer:

CREATE SEQUENCE TRUCK_SEQUENCE MINVALUE 0 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 0 CACHE 20 NOORDER NOCYCLE; 

SELECT 'NEXT_CAR', 
TO_CHAR(TO_DATE('08.08.2016 10:00', 'dd.mm.yyyy hh24:mi:ss')+1/24/60*30*TRUCK_SEQUENCE.NEXTVAL, 'dd.mm.yyyy hh24:mi:ss') 
FROM DUAL; 

Nachteile: Wenn Sie vom Sequenzer ziehen, wird dieser Zeitrahmen verloren. Das heißt, wenn Sie zum Beispiel entscheiden, dass Sie Auto 3 nicht um 11:00 Uhr laden (aus der Tabelle löschen), sondern Auto 4 laden möchten (eine weitere Beilage), erhalten Sie 11:30. Es ist ein echtes Feature des Sequenzers.

Lösung max Zeit Tabelle:

WITH LOAD_TIMES AS 
    (SELECT 'TRUCK1'          AS CAR, 
    TO_DATE('08.08.2016 10:00', 'dd.mm.yyyy hh24:mi:ss') AS TIME 
    FROM DUAL 
) 
SELECT 'TRUCK2', 
    TO_CHAR(MAX(TIME)+1/24/60*30, 'dd.mm.yyyy hh24:mi:ss') 
    FROM LOAD_TIMES; 

Nachteile: Sie abfragen gesamte Tabelle jedes Mal max Zeit zu finden und es dann erhöht.

Gemeinsam für alle Lösungen:

--This is basic offset (date to start with) 
TO_DATE('08.08.2016 10:00', 'dd.mm.yyyy hh24:mi:ss') 
+0

baut Genau das habe ich auch im Cons-Teil dieser Lösung gesagt. Bitte beachten Sie die ursprüngliche Anfrage aber ** ist es möglich, die automatische Sequenz für diesen ** zu machen? Wenn ich so etwas machen wollte, würde ich versuchen, zuerst Lücken zu finden (die nicht belegt sind) und nicht kleiner als das aktuelle sysdate, aber das ist viel komplizierter als das, was angefordert wird. Die Anfrage ist sehr vage. – peterpepo

+0

Wissen wir überhaupt was eine 'automatische Sequenz' ist? Ich jedenfalls nicht. –

0

Sie können so etwas wie dies bei insert Aussage versuchen stattdessen eine sequence zu haben.

TO_DATE('08.08.2016 10:00', 'dd.mm.yyyy hh24:mi:ss') Betrachtet man die Anfangszeit von shipping1

INSERT INTO table1 
(shipping_number, truck_number, truck_time) 
VALUES ('shipping1', 'truck3', 
(SELECT count(truck_number) 
FROM table1 
group by shipping 
WHERE shipping_number='shipping1')*30/(24*60)+TO_DATE('08.08.2016 10:00', 'dd.mm.yyyy hh24:mi:ss'))); 
Verwandte Themen