2016-03-21 18 views
0

OK, damit ich ein WordPress-Plugin habe, das mir erlaubt, ein Formular auf meiner Seite genau so zu erstellen, wie ich es möchte. Im Idealfall möchte ich das nicht ändern. Aber wenn es Daten an eine MySQL-Tabelle füllt es füllt es wie folgt aus:MySQL Zeilen zu Spalten basierend auf Datentyp Feld und Sendezeit

Submit time | Datatype | Value 

     1PM | Client | bob 
     1PM | Venue | Country Club 
     1PM | Job_Date | 2/20/22 

Ich mag würde die Tabelle in eine neue Tabelle verwandeln, die etwa wie folgt aussieht:

ID | Client | Venue  | Job_Date 
1 | Bob | Country Club | 2/20/22 

Aber ich bin Schwierigkeiten haben, es herauszufinden. Ich weiß, dass ich keine Trigger verwenden kann, weil die Daten importiert werden (jeweils 1 Feld). Ich benötige grundsätzlich Code, der immer läuft, der nach übereinstimmenden Submissionzeiten sucht und jede Reihe in die passende Spalte hinzufügt. Ich habe es mit einer Ansicht arbeiten lassen, aber ich bin nicht in der Lage, automatisch mit einer Ansicht zu inkrementieren, so dass ich keine ID-Spalte mehr habe, die ich als Primärschlüssel benötigen würde. Kann jemand mein Problem beheben?

+0

Wenn Sie es als eine Ansicht arbeiten, könnten Sie einfach hinzufügen und zusätzliche Variable wie ID oder etwas und machen Sie diese Zählung von 1 bis zu was auch immer basierend auf einer Art von Reihenfolge? –

+0

Idealerweise würde ich gerne auf diesem Datensatz in anderen Tabellen weiter aufbauen, so dass ich es als Tabelle existieren muss, damit ich es als einen Fremdschlüssel bezeichnen kann. –

Antwort

0

versuchen diese sqlfiddle

SELECT @id := IFNULL(@id,0) + 1 as ID,T1.Client,T2.Venue,T3.Job_Date 
FROM 
(SELECT Submit_Time,Value as Client FROM tab1 WHERE DataType = 'Client') as T1 
LEFT JOIN 
(SELECT Submit_Time,Value as Venue FROM tab1 WHERE DataType = 'Venue') as T2 ON T1.Submit_Time = T2.Submit_Time 
LEFT JOIN 
(SELECT Submit_Time,Value as Job_Date FROM tab1 WHERE DataType = 'Job_Date') as T3 ON T1.Submit_Time = T3.Submit_Time 
ORDER BY T1.Client,T2.Venue,T3.Job_Date 

Obwohl ich kann Problem mit diesem, wenn neue Daten in das kommt irgendwo zwischen der Bestellung ist es Gonna Sie neue ids ist geben ... so könnte es nicht für Sie arbeiten.

UPDATE: hier sqlfiddle with trigger Dieser Trigger wird funktionieren, solange SUBMIT_TIME immer einzigartig ist ... sonst, wenn an einem anderen Tag, wenn die gleiche Zeit vorlegen auftritt, es wird die falschen Zeilen aktualisieren, die SUBMIT_TIME haben übereinstimmen.

+0

Ich mag das Design, aber wie bekomme ich es, um den anderen Tisch ständig zu bevölkern? –

+0

könnte tiefer graben müssen ich vergessen Syntax zum Erstellen von Triggern..aber Sie könnten es auslösen, um in Ihre neue Tabelle einzufügen, wenn es nicht schon drin ist? –

+0

Nun, das ist mein Problem atm. Der Trigger kann in diesem Fall nicht arbeiten, da er einzeln eingefügt wird. es sei denn, es gibt irgendeine Möglichkeit, dem Trigger mitzuteilen, dass er die Sendezeit finden soll, und wenn dort die X-Daten zu der Y-Spalte hinzugefügt werden, andernfalls wird ein neues hinzugefügt. –

Verwandte Themen