def determine_table_subset_by_start_and_column(conn, tbl_start, cols):
    """
    :param conn:
    :param tbl_start: str
    :param cols: list of column names
    :return: list of table names

    Determine which tables that start with a particular string have a
    particular column.
    """
    all_tables = conn.execute("SELECT name FROM sqlite_master WHERE type='table';")
    table_subset = []

    c = conn.cursor()
    for tbl_tuple in all_tables:
        table = tbl_tuple[0]
        if table.startswith(tbl_start):
            table_data_query = c.execute(
              """SELECT * FROM {};""".format(table)
            )
            column_names = [s[0] for s in table_data_query.description]
            if all(col in column_names for col in cols):
                table_subset.append(table)

    return table_subset