-- Anhang zu Buch Die Datenbank MySQL als Hilfsmittel für die -- Darstellung geschichtlicher Themen: Datei dokuselect.txt Beispiele für SELECT-Befehle: Einfacher Select: eine Tabelle sortiert ausgeben: SELECT mann, frau, jahr FROM hochzeiten ORDER BY frau, jahr Select, um eine Tabelle mit nur einem Satz anzuzeigen: SELECT text FROM dokukatasterdaten Die Sätze einer Tabelle zählen und ausgeben nach Gruppen pro Jahr: SELECT jahr, count(*) AS summejahr FROM hochzeiten GROUP BY jahr ORDER BY jahr Die Straßennamen sortiert ausgeben: SELECT strassenname, stadtbnr, stadtbezirk FROM strassenstadt ORDER BY strassenname Alle Sätze der Tabelle Hochzeiten zählen und pro Beruf der Frau summiert ausgeben SELECT fberuf, count(*) AS summeberuf FROM hochzeiten GROUP BY fberuf ORDER BY fberuf Die Vorname der männlichen Hochzeiter ausgeben: SELECT mann, mvorname FROM hochzeiten ORDER BY mvorname Befehl für das Navigations-Programm: SELECT gruppe , ugruppe , titel FROM navigation WHERE gruppe = '00' AND aktiv = 'j' ORDER BY ugruppe Select um das Untermenü 30 aufzurufen: SELECT gruppe , ugruppe , titel FROM navigation WHERE gruppe = '30' AND aktiv = 'j' GROUP BY ugruppe Programm, um alle Häuser zu zeigen mit der verknüpften Tabelle statamtstrassen: SELECT haeuser.hausnr1913, haeuser.plannr, haeuser.schluessel1913, haeuser.schluessel1918, haeuser.strassennr, statamtstrassen.strname AS strassenname2012, haeuser.hausnrneu, haeuser.besitzer1913 FROM haeuser LEFT JOIN statamtstrassen ON haeuser.strassennr = statamtstrassen.schluessel ORDER BY hausnr1913 Befehl, um alle Katasterbände anzuzeigen SELECT DISTINCT katkopf.raort AS raort, katkopf.rentamt AS ra, katkopf.steuergemeinde AS stg, katkopf.steuerdistrikt AS std, katkopf.landamtsger AS ger, katabk.name, katabk.abk AS abk, kattyp.gruppe AS gruppe, katband.bandnr AS bnr, katband.ksv AS ksv, katband.ksb AS ksb, katband.hv AS hv, katband.hb AS hb, kattyp.jahrv AS jahrv, kattyp.jahrb AS jahrb FROM katband LEFT JOIN katkopf ON katkopf.raort = katband.raort LEFT JOIN katabk ON katband.abk = katabk.abk LEFT JOIN kattyp ON katband.abk = kattyp.abk WHERE katabk.abk IS NOT NULL AND katband.abk = kattyp.abk AND katband.raort = kattyp.raort ORDER BY katkopf.rentamt, katkopf.steuergemeinde, katabk.abk, katband.ksv Anzeigen von Personen mit diversen Daten (u.a. Alter), die Variablen $fam, $jahr1 und $jahr2 werden vorher eingegeben SELECT geburtendetail.fam AS fam, knachname, kvorname, kgebdatum, DATE_Format(kgebdatum, '%Y') AS kgebjahr, quelle, ktoddatum, (YEAR(ktoddatum) - YEAR(kgebdatum)) AS kalterj, (MONTH(ktoddatum) - MONTH(kgebdatum)) AS kalterm, (DAY(ktoddatum) - DAY(kgebdatum)) AS kaltert, vnachname, vvorname, vgebjahr, DATE_Format(kgebdatum, '%Y') - vgebjahr AS valter, mnachname, mvorname, mgebjahr, DATE_Format(kgebdatum, '%Y') - mgebjahr AS malter FROM `geburtendetail` WHERE ktoddatum IS NOT NULL AND kgebdatum IS NOT NULL AND (YEAR(ktoddatum) - YEAR(kgebdatum)) < 1 AND fam = '$fam' AND DATE_Format(kgebdatum, '%Y') >= $jahr1 AND DATE_Format(kgebdatum, '%Y') <= $jahr2 OR ktoddatum IS NOT NULL AND kgebdatum IS NOT NULL AND (YEAR(ktoddatum) - YEAR(kgebdatum)) < 2 AND (MONTH(ktoddatum) - MONTH(kgebdatum)) < 0 AND fam = '$fam' AND DATE_Format(kgebdatum, '%Y') >= $jahr1 AND DATE_Format(kgebdatum, '%Y') <= $jahr2 ORDER BY knachname, kvorname Anzeigen von Personen, die nicht ein Jahr geworden sind SELECT geburtendetail.fam AS fam, knachname, kvorname, kgebdatum, DATE_Format(kgebdatum, '%Y') AS kgebjahr, quelle, ktoddatum, (YEAR(ktoddatum) - YEAR(kgebdatum)) AS kalterj, (MONTH(ktoddatum) - MONTH(kgebdatum)) AS kalterm, (DAY(ktoddatum) - DAY(kgebdatum)) AS kaltert, vnachname, vvorname, vgebjahr, DATE_Format(kgebdatum, '%Y') - vgebjahr AS valter, mnachname, mvorname, mgebjahr, DATE_Format(kgebdatum, '%Y') - mgebjahr AS malter FROM `geburtendetail` WHERE ktoddatum IS NOT NULL AND kgebdatum IS NOT NULL AND (YEAR(ktoddatum) - YEAR(kgebdatum)) < 1 OR ktoddatum IS NOT NULL AND kgebdatum IS NOT NULL AND (YEAR(ktoddatum) - YEAR(kgebdatum)) < 2 AND (MONTH(ktoddatum) - MONTH(kgebdatum)) < 0 ORDER BY knachname, kvorname Anzeigen von Personen, die leben und heute über 20 Jahre sind und auch diejenigen, die in einem Alter über 20 Jahre verstorben sind SELECT geburtendetail.fam AS fam, knachname, kvorname, kgebdatum, DATE_Format(kgebdatum, '%Y') AS kgebjahr, quelle, ktoddatum, (YEAR(ktoddatum) - YEAR(kgebdatum)) AS kalterj, (MONTH(ktoddatum) - MONTH(kgebdatum)) AS kalterm, (DAY(ktoddatum) - DAY(kgebdatum)) AS kaltert, vnachname, vvorname, vgebjahr, DATE_Format(kgebdatum, '%Y') - vgebjahr AS valter, mnachname, mvorname, mgebjahr, DATE_Format(kgebdatum, '%Y') - mgebjahr AS malter FROM `geburtendetail` WHERE ktoddatum IS NULL AND kgebdatum IS NOT NULL AND (DATE_FORMAT(CURDATE(),'%Y') - DATE_FORMAT(kgebdatum, '%Y')) > 20 OR ktoddatum IS NOT NULL AND kgebdatum IS NOT NULL AND (YEAR(ktoddatum) - YEAR(kgebdatum)) > 20 ORDER BY knachname, kvorname Doppelte Sätze rausfiltern: DROP TALBE If EXISTS tmp; CREATE TABLE tmp SELECT plannr, hausnr1913, hausnrneu1918, hausnrheute, count(*) as anzahl FROM haeuser group by $feld; SELECT plannr, hausnr1913, hausnrneu1918, hausnrheute, anzahl FROM tmp WHERE anzahl > 1; Beispiel, wie ich untersuche, ob es doppelte Steuerzeichen (gruppe und ugruppe) in der Datei navigation gibt: DROP TABLE If EXISTS tmp CREATE TABLE tmp SELECT gruppe, ugruppe, count(*) as anzahl FROM navigation SELECT gruppe, ugruppe, anzahl FROM tmp WHERE anzahl > 1 ?> Änderungsstand: 31-Jul-2014 Upd 28-Feb-2019 Heinz Wember