pyolingo/data.php

66 lines
3.1 KiB
PHP

<?php
require_once __DIR__ . '/includes/db_connect.php';
header('Content-Type: application/json');
$stmt = $pdo->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);