Rechnungspositionen und Rechnungen über einen gewissen Zeitraum ausgeben
SELECT DISTINCT r.id AS Rechnungsnummer, r.titel AS Rechnungstitel, r.betrag AS Rechnungstotal, r.referenz_nummer AS Referenznummer, GROUP_CONCAT(DISTINCT p.email SEPARATOR '; ') AS Mailadresse, k.bezeichnung AS Name, repos1.beschrieb AS Rechnungsposition1Beschrieb, repos1.betrag AS Rechnungsposition1Betrag, CONCAT_WS('', ha1.abotyp_name, da1.abotyp_name, pa1.abotyp_name, za1.abotyp_name) AS Rechnungsposition1AbotypName, repos2.beschrieb AS Rechnungsposition2Beschrieb, repos2.betrag AS Rechnungsposition2Betrag, CONCAT_WS('', ha2.abotyp_name, da2.abotyp_name, pa2.abotyp_name, za2.abotyp_name) AS Rechnungsposition2AbotypName, repos3.beschrieb AS Rechnungsposition3Beschrieb, repos3.betrag AS Rechnungsposition3Betrag, CONCAT_WS('', ha3.abotyp_name, da3.abotyp_name, pa3.abotyp_name, za3.abotyp_name) AS Rechnungsposition3AbotypName, repos4.beschrieb AS Rechnungsposition4Beschrieb, repos4.betrag AS Rechnungsposition4Betrag, CONCAT_WS('', ha4.abotyp_name, da4.abotyp_name, pa4.abotyp_name, za4.abotyp_name) AS Rechnungsposition4AbotypName, repos5.beschrieb AS Rechnungsposition5Beschrieb, repos5.betrag AS Rechnungsposition5Betrag, CONCAT_WS('', ha5.abotyp_name, da5.abotyp_name, pa5.abotyp_name, za5.abotyp_name) AS Rechnungsposition5AbotypName, repos6.beschrieb AS Rechnungsposition6Beschrieb, repos6.betrag AS Rechnungsposition6Betrag, CONCAT_WS('', ha6.abotyp_name, da6.abotyp_name, pa6.abotyp_name, za6.abotyp_name) AS Rechnungsposition6AbotypName FROM Rechnung r, Kunde k, Person p left join RechnungsPosition repos1 on repos1.id = (select rp1.id from RechnungsPosition rp1 where rp1.rechnung_id = r.id order by rp1.id LIMIT 0,1) left join HeimlieferungAbo ha1 on ha1.id = repos1.abo_id left join DepotlieferungAbo da1 on da1.id = repos1.abo_id left join PostlieferungAbo pa1 on da1.id = repos1.abo_id left join ZusatzAbo za1 on za1.id = repos1.abo_id left join RechnungsPosition repos2 on repos2.id = (select rp2.id from RechnungsPosition rp2 where rp2.rechnung_id = r.id order by rp2.id LIMIT 1,1) left join HeimlieferungAbo ha2 on ha2.id = repos2.abo_id left join DepotlieferungAbo da2 on da2.id = repos2.abo_id left join PostlieferungAbo pa2 on da2.id = repos2.abo_id left join ZusatzAbo za2 on za2.id = repos2.abo_id left join RechnungsPosition repos3 on repos3.id = (select rp3.id from RechnungsPosition rp3 where rp3.rechnung_id = r.id order by rp3.id LIMIT 2,1) left join HeimlieferungAbo ha3 on ha3.id = repos3.abo_id left join DepotlieferungAbo da3 on da3.id = repos3.abo_id left join PostlieferungAbo pa3 on da3.id = repos3.abo_id left join ZusatzAbo za3 on za3.id = repos3.abo_id left join RechnungsPosition repos4 on repos4.id = (select rp4.id from RechnungsPosition rp4 where rp4.rechnung_id = r.id order by rp4.id LIMIT 3,1) left join HeimlieferungAbo ha4 on ha4.id = repos4.abo_id left join DepotlieferungAbo da4 on da4.id = repos4.abo_id left join PostlieferungAbo pa4 on da4.id = repos4.abo_id left join ZusatzAbo za4 on za4.id = repos4.abo_id left join RechnungsPosition repos5 on repos5.id = (select rp5.id from RechnungsPosition rp5 where rp5.rechnung_id = r.id order by rp5.id LIMIT 4,1) left join HeimlieferungAbo ha5 on ha5.id = repos5.abo_id left join DepotlieferungAbo da5 on da5.id = repos5.abo_id left join PostlieferungAbo pa5 on da5.id = repos5.abo_id left join ZusatzAbo za5 on za5.id = repos5.abo_id left join RechnungsPosition repos6 on repos6.id = (select rp6.id from RechnungsPosition rp6 where rp6.rechnung_id = r.id order by rp6.id LIMIT 5,1) left join HeimlieferungAbo ha6 on ha1.id = repos6.abo_id left join DepotlieferungAbo da6 on da1.id = repos6.abo_id left join PostlieferungAbo pa6 on da1.id = repos6.abo_id left join ZusatzAbo za6 on za6.id = repos6.abo_id WHERE r.kunde_id = k.id AND p.kunde_id = k.id AND r.rechnungs_datum > '2000-01-01' AND r.id > 0 GROUP BY r.id, r.titel, r.betrag, r.referenz_nummer, k.bezeichnung, repos1.beschrieb, repos1.betrag, ha1.abotyp_name, da1.abotyp_name, pa1.abotyp_name, za1.abotyp_name, repos2.beschrieb, repos2.betrag, ha2.abotyp_name, da2.abotyp_name, pa2.abotyp_name, za2.abotyp_name, repos3.beschrieb, repos3.betrag, ha3.abotyp_name, da3.abotyp_name, pa3.abotyp_name, za3.abotyp_name, repos4.beschrieb, repos4.betrag, ha4.abotyp_name, da4.abotyp_name, pa4.abotyp_name, za4.abotyp_name, repos5.beschrieb, repos5.betrag, ha5.abotyp_name, da5.abotyp_name, pa5.abotyp_name, za5.abotyp_name, repos6.beschrieb, repos6.betrag, ha6.abotyp_name, da6.abotyp_name, pa6.abotyp_name, za6.abotyp_name ORDER BY r.id;