2016-11-24 9 views
0

Ich bin wirklich in diesem stecken. Ich habe versucht, Union, indem Sie eine ausführbare Anweisung vorzubereiten. Ich bin mir sehr wohl bewusst, dass SQL keine Sprache für solche Aufgaben ist, aber ab sofort ist es das Ziel, einen Prototyp zu erstellen. Die eigentlichen technischen Implementierungen würden später passieren.Mysql: Anzeige der Werte der Spalte unter einer anderen Spalte

Ich werde meine Anforderungen erklären.

Es gibt eine temporäre Tabelle, in der ich Name, Projekt und Funktionen zu diesem Projekt speichern. Die Spalten speichern Zeilen wie:

Beispieldaten:

project, Tracker, resource_name, Total_Hours, date, project_counts, 

    'Slim', 'Feature', 'babu.balakrishnan', '39', '2016-10-22', '20' 
    'Slim', 'Feature', 'prasenjit.ghosh', '1.5', '2016-10-22', '2' 
    'Slim', 'Feature', 'shamim.akhtar', '3', '2016-10-22', '2' 
    'Slim', 'Support', 'babu.balakrishnan', NULL, '2016-10-22', '1' 
    'Slim', 'Support', 'shamim.akhtar',  '3', '2016-10-22', '2' 

I ausgegeben werden soll auf diese Weise angezeigt werden:

babu.balakrishnan Slim  2016-10-22  
         Feature  20       
         Support  1    


     prasenjit.ghosh Slim         
         Feature  3    

Ich weiß, wie Name des Entwicklers angezeigt werden, Name des Projekts und Datum in einer Zeile, aber ich kann nicht herausfinden, wie ich fortfahren soll, um den Status des Projekts unterhalb des Projektnamens anzuzeigen. Dies gilt auch für nur einen Entwickler. Ich muss das für alle Projekte wiederholen, mit denen ein Entwickler verbunden ist, und dann auch für andere Entwickler.

 SELECT 
     GROUP_CONCAT(DISTINCT 
     CONCAT(
     'CASE WHEN date = ''', 
     date, 
     ''' then project_counts end AS `', date, '`') 
     ORDER BY date) INTO @sql 
     FROM finance_dashboard.resource_utilization_data; 

     SELECT 
     GROUP_CONCAT(DISTINCT 
     CONCAT(
     'CASE WHEN project = ''', 
     project, 
     ''' then Tracker end AS `', ' ' , '`') 
     ORDER BY date) INTO @sql2 
     FROM finance_dashboard.resource_utilization_data; 

     SET @sql = CONCAT('select distinct resource_name, project   
     ,',@sql, ' from finance_dashboard.resource_utilization_data 
     union 
     select '''' ,', @sql2, '," " FROM   
     finance_dashboard.resource_utilization_data group by 
     Tracker');   

Die Ausgabe, die ich erhalte ist:

 'babu.balakrishnan', 'Slim', '20' 
     'prasenjit.ghosh', 'Slim', '2' 
     'shamim.akhtar',  'Slim', '2' 
     'babu.balakrishnan', 'Slim', '1' 
         '', 'Feature', ' ' 

Ich möchte Funktion, Unterstützung oder was auch immer Status für diesen Entwickler, unten schmal erscheinen, für die jeweiligen Entwickler.

Ist dies auf Abfrageebene möglich? Ich weiß, Aggregatfunktion muss verwendet werden.

Ist es auch möglich, Variablen dyamisch zu binden, so dass der Wert einer bestimmten Zeile unterhalb der Spalte geschrieben wird?

Dank

+0

Sind die Anzahl der Fixtermine, oder sind sie variabel? Auf den ersten Blick würde ich sagen, dass dies am besten in Ihrer App-Ebene (PHP?) Gehandhabt werden kann. –

+0

Ja. Termine sind kein Problem. Die SQL würde für Startdatum und Enddatum ausgeführt werden. Das Einzige, was ich zeigen muss, sind die Daten, die in einer Übersichtstabelle gespeichert werden. Leider wird derzeit keine andere Programmiersprache empfohlen. –

+0

Ihre Beispieldaten und Ausgabe sind nicht gut ausgerichtet, zumindest ist nicht klar, wie Sie es erreichen können. Bitte geben Sie ein reproduzierbares Beispiel. –

Antwort

0
$db=new mysqli("localhost","root","","test"); 

$result=$db->query("select date,project_id,name ... from tableName"); 

while(list($date,$project_id,$name)=$result->fetch_row()){ 
    echo "<div class='record'>"; 
     echo "<div class='field'><strong>Date:</strong> $date</div>"; 
     echo "<div class='field'><strong>Project:</strong> $project_id</div>"; 
     echo "<div class='field'><strong>Name:</strong> $name</div>"; 
    echo "</div>"; 

} 
Verwandte Themen