Abfragen normalisierter Daten

  1. Abfragen aller Bücher sortiert nach language_id und title:

     7def select_all_records_ordered_by_language_number(cursor):
     8    print("All books ordered by language id and title:")
     9    for row in cursor.execute(
    10        """SELECT language_code, author, title FROM books
    11                                 ORDER BY language_code,title"""
    12    ):
    13        print(row)
    
    All books ordered by language id and title:
    (1, 'Veit Schiele', 'Jupyter Tutorial')
    (2, 'Veit Schiele', 'Jupyter Tutorial')
    (2, 'Veit Schiele', 'PyViz Tutorial')
    (2, 'Veit Schiele', 'Python basics')
    
  2. Um nun nicht nur die ID der Sprachen zu erhalten sondern die zugehörigen Sprachcodes wird mit JOIN über die id-Spalte in der languages-Tabelle eine Verbindung zu den dort hinterlegten Sprachcodes hergestellt:

    16def select_all_records_ordered_by_language_code(cursor):
    17    print("All books ordered by language code and title:")
    18    for row in cursor.execute(
    19        """SELECT languages.language_code, books.author, books.title
    20                                 FROM books
    21                                 JOIN languages ON (books.language_code = languages.id)
    22                                 ORDER BY languages.language_code,title"""
    23    ):
    24        print(row)
    
    All books ordered by language code and title:
    ('de', 'Veit Schiele', 'Jupyter Tutorial')
    ('en', 'Veit Schiele', 'Jupyter Tutorial')
    ('en', 'Veit Schiele', 'PyViz Tutorial')
    ('en', 'Veit Schiele', 'Python basics')