MySQL Statement gesucht ...

webmark487

Grünschnabel
Hallo allerseits,

Ich suche ein MySQL Statement - hier mal die Rahmenbedinungen:

TabelleEins

|| fid || field_name ||
| 1 | Gewicht |
| 2 | Alter |
| 3 | Haarfarbe |


TabelleZwei

|| pid || name ||
| 1 | Markus |
| 2 | Erwin |
| 3 | Stefan |


TabelleDrei

|| id || pid || fid || field_value ||
| 1 | 1 | 1 | 80 |
| 2 | 1 | 2 | 34 |
| 3 | 1 | 3 | Braun |
| 4 | 2 | 1 | 90 |
| 5 | 2 | 2 | 78 |
| 6 | 2 | 3 | Blond |
| 7 | 3 | 1 | 67 |
| 8 | 3 | 2 | 46 |
| 9 | 3 | 3 | Schwarz |




WANTED: Ich bräuchte eine Abfrage um dieses Ergebnis zu erzielen (mit Spaltenüberschriften):

|| Name || Gewicht || Alter || Haarfarbe ||
| Markus | 80 | 34 | Braun |
| Erwin | 90 | 78 | Blond |
| Stefan | 67 | 46 | Schwarz |

Ohne Spaltenüberschriften bräuchte man eigentlich nur 2 Tabellen abfragen (TabelleZwei und TabelleDrei) - das wär auch möglich.

Vielen Dank fürs Mitdenken - leider konnte ich bis dato keine Lösung im diy-Verfahren finden.

Schöne Grüße
webmark487
 
CrossQuery oder Pivot ist das gescuhte

SQL:
SELECT
  t2.name,
  MAX(CASE 
    WHEN t1.field_name = 'Gewicht'
    THEN t3.field_value 
    ELSE 0 
  END)                   AS gewicht,
  MAX(CASE 
    WHEN t1.field_name = 'Alter'
    THEN t3.field_value 
    ELSE 0 
  END)                   AS alter,
  MAX(CASE 
    WHEN t1.field_name = 'Haarfarbe'
    THEN t3.field_value 
    ELSE '' 
  END)                   AS harfarbe
FROM
  tabelleZwei t2
  LEFT JOIN tabelleDrei t3
    ON t2.pid = t3.pid
  LEFT JOIN tabelleEins t1
    ON t3.fid = t1.fid
GROUP BY
  t2.name
 
Zuletzt bearbeitet von einem Moderator:
Zurück