query("WITH zeile AS ( SELECT d.id, d.wort, k.name, i.wort AS italienisch, COALESCE(f.farbe, 'black') AS farbe, p.pronomen, i.endung, i.suffix, ROW_NUMBER() OVER (PARTITION BY d.wort ORDER BY i.personalpronomen_id NULLS FIRST, i.id) AS rn FROM deutsch d JOIN italienisch i ON i.deutsch_id = d.id LEFT OUTER JOIN personalpronomen p ON p.id = i.personalpronomen_id LEFT OUTER JOIN farbe f ON f.id = i.farbe_id JOIN kategorie k ON k.id = d.kategorie_id ) SELECT id, wort AS deutsch, name AS wortart, MAX(CASE WHEN rn = 1 THEN italienisch END) AS italienisch_1, MAX(CASE WHEN rn = 1 THEN farbe END) AS farbe_1, MAX(CASE WHEN rn = 1 THEN pronomen END) AS pronomen_1, MAX(CASE WHEN rn = 1 THEN endung END) AS endung_1, MAX(CASE WHEN rn = 1 THEN suffix END) AS suffix_1, MAX(CASE WHEN rn = 2 THEN italienisch END) AS italienisch_2, MAX(CASE WHEN rn = 2 THEN farbe END) AS farbe_2, MAX(CASE WHEN rn = 2 THEN pronomen END) AS pronomen_2, MAX(CASE WHEN rn = 2 THEN endung END) AS endung_2, MAX(CASE WHEN rn = 2 THEN suffix END) AS suffix_2, MAX(CASE WHEN rn = 3 THEN italienisch END) AS italienisch_3, MAX(CASE WHEN rn = 3 THEN farbe END) AS farbe_3, MAX(CASE WHEN rn = 3 THEN pronomen END) AS pronomen_3, MAX(CASE WHEN rn = 3 THEN endung END) AS endung_3, MAX(CASE WHEN rn = 3 THEN suffix END) AS suffix_3, MAX(CASE WHEN rn = 4 THEN italienisch END) AS italienisch_4, MAX(CASE WHEN rn = 4 THEN farbe END) AS farbe_4, MAX(CASE WHEN rn = 4 THEN pronomen END) AS pronomen_4, MAX(CASE WHEN rn = 4 THEN endung END) AS endung_4, MAX(CASE WHEN rn = 4 THEN suffix END) AS suffix_4, MAX(CASE WHEN rn = 5 THEN italienisch END) AS italienisch_5, MAX(CASE WHEN rn = 5 THEN farbe END) AS farbe_5, MAX(CASE WHEN rn = 5 THEN pronomen END) AS pronomen_5, MAX(CASE WHEN rn = 5 THEN endung END) AS endung_5, MAX(CASE WHEN rn = 5 THEN suffix END) AS suffix_5, MAX(CASE WHEN rn = 6 THEN italienisch END) AS italienisch_6, MAX(CASE WHEN rn = 6 THEN farbe END) AS farbe_6, MAX(CASE WHEN rn = 6 THEN pronomen END) AS pronomen_6, MAX(CASE WHEN rn = 6 THEN endung END) AS endung_6, MAX(CASE WHEN rn = 6 THEN suffix END) AS suffix_6, MAX(CASE WHEN rn = 7 THEN italienisch END) AS italienisch_7, MAX(CASE WHEN rn = 7 THEN farbe END) AS farbe_7, MAX(CASE WHEN rn = 7 THEN pronomen END) AS pronomen_7, MAX(CASE WHEN rn = 7 THEN endung END) AS endung_7, MAX(CASE WHEN rn = 7 THEN suffix END) AS suffix_7 FROM zeile GROUP BY id, wort, name ORDER BY id;"); $karteikarten = $stmt->fetchAll(PDO::FETCH_ASSOC); echo json_encode($karteikarten);