2017-12-13 3 views
0

Gibt es eine Möglichkeit, Zeilen mit unterschiedlichen Daten automatisch zu generieren, aber den Rest der Daten gleich zu halten?Automatisch Zeilen mit unterschiedlichen Daten generieren

Zum Beispiel versuche ich, die unten alle 7 Wochen zu generieren? Gibt es einen guten Weg, dies zu tun, oder sollte ich das unten manuell wiederholen?

INSERT INTO courses (CourseCode ,OrganiserID ,TopicID ,StartDate ,EndDate ,Week ,LocationID ,CourseFee) 


SELECT 'TEMP',9,51,'2018-01-22','2018-01-26',4 -- Week ,2,CourseFee FROM topic WHERE TopicID=51; 
+0

was hat der einschub mit dem select zu tun? fehlt etwas? Was soll der kommentierte Teil des Select bedeuten? Es tut mir leid zu sagen, dass ich nicht verstehe –

+0

Wenn ich es wäre, würde ich ein einfacheres Beispiel geben - eines mit nur 2 oder 3 Spalten, sagen wir – Strawberry

Antwort

0

Dies ist die Lösung für Sie:

  1. eine Tabelle mit der ID erstellen

  2. Insert 1 bis 52 für 52 Wochen

  3. Wählen Sie beginnen und enden Tag des Woche vom Tisch.

  4. einfügen andere Daten mit Datum und Enddatum der Woche beginnen


Create table test1(id int not null PRIMARY KEY); 

INSERT into test1 select 1; 

insert ignore into test1 select id+(select max(id) from test1) from test1; 

insert ignore into test1 select id+(select max(id) from test1) from test1; 

insert ignore into test1 select id+(select max(id) from test1) from test1; 

insert ignore into test1 select id+(select max(id) from test1) from test1; 

insert ignore into test1 select id+(select max(id) from test1) from test1; 

insert ignore into test1 select id+(select max(id) from test1) from test1; 

delete from test1 where id >52; 

-- Select 52 week begin and end date 
select DATE_ADD('2017-01-02',INTERVAL (id-1)*7 DAY) Week_begin_date, DATE_ADD('2017-01-02',INTERVAL (id-1)*7+4 DAY) Week_end_date from test1; 

--Insert Data for 52 weeks 
INSERT INTO courses (CourseCode ,OrganiserID ,TopicID ,StartDate ,EndDate ,Week ,LocationID ,CourseFee) 
SELECT 'TEMP',9,51,DATE_ADD('2017-01-02',INTERVAL (id-1)*7 DAY), DATE_ADD('2017-01-02',INTERVAL (id-1)*7+4 DAY) ,id, <LocationID_value>, <CourseFee_value> from test1; 
0

ich bin nicht sicher, was Ihre Anforderungen an „einem anderen Datum“ ist. Wenn Sie nur verschiedene Zeitstempel von einer Reihe zur nächsten müssen folgende funktioniert:

INSERT INTO courses (CourseCode ,OrganiserID ,TopicID ,StartDate ,EndDate ,Week ,LocationID ,CourseFee) 
SELECT 'TEMP',9,51,NOW(), NOW(),4,2,CourseFee 
FROM topic WHERE TopicID=51; 

Wenn „einem anderen Datum“ jedes Datum bedeutet, auf eine einzelne Zeile einen anderen Kalender-Datum sein muss, die folgendes funktioniert :

INSERT INTO courses (CourseCode ,OrganiserID ,TopicID ,StartDate ,EndDate ,Week ,LocationID ,CourseFee) 
SELECT 'TEMP',9,51,NOW(), NOW() + INTERVAL 1 DAY,4,2,CourseFee 
FROM topic WHERE TopicID=51; 

Bitte klären Sie Anforderungen für "verschiedene Daten" und ich kann eine bessere Antwort bilden.

+0

Also versuche ich den Kurs/das Ereignis alle 7 Wochen wiederholen zu lassen eine neue Zeile pro Ereignis Jedes Datum ist ein Kalenderdatum. – tom

+0

OK, ein wenig näher .. Brauchen Sie noch mehr Parameter .. Also Sie wollen eine neue Zeile für jedes geplante Ereignis. Ich nehme an, alle Ereignisse sind in der Zukunft? Was ist das Startdatum? Was ist die Dauer jeder Veranstaltung? und Wie viele Vorkommnisse der Veranstaltung möchten Sie? – DarbyM

+0

Richtig, eine neue Zeile für jedes geplante Ereignis und alle Ereignisse liegen in der Zukunft. Start Datum ist 22/01/18 über 5 Tage, also bis 27/01/18 und wiederholen Sie es alle 7 Wochen für den Rest von 2018. – tom

Verwandte Themen