計算機科学のブログ

ほしい物リスト

SQL - SQLite - SELECT - 天賦のデータ検索 - WHERE句

Head First SQL ―頭とからだで覚えるSQLの基本Lynn Beighley(著)、 佐藤 直生(監訳)、 松永 多苗子(翻訳)、 オライリージャパンの 2章(SELECT - 天賦のデータ検索)、p.60(飲み物当てクイズ)の解答を求めてみる。

コード

sample3.py

#! /usr/bin/env python3

import sqlite3

con = sqlite3.connect('drinks.db')
cur = con.cursor()

cur.execute('''select * from easy_drinks''')
for row in cur.fetchall():
    print(row)

wheres = [
    """main = 'スプライト'""",
    """main = ソーダ""",
    """amount2 = 6""",
    '''second = "オレンジジュース"''',
    """amount1 < 1.5""",
    """amount2 < '1'""",
    """main > 'トニックウォーター'""",
    """amount1 = '1.5'""",
]

for where in wheres:
    sql = f'select * from easy_drinks where {where}'
    print(sql)
    try:
        cur.execute(sql)
        for row in cur.fetchall():
            print(row)
    except Exception as err:
        print(err)
    print()

cur.close()
con.close()

入出力結果(Terminal, Zsh)

% ./sample3.py   
('ブラックソーン', 'トニックウォーター', 1.5, 'パイナップルジュース', 1.0, '氷と一緒にかきまぜ、濾してカクテルにグラスに入れ、レモンを一絞り加える')
('ブルームーン', 'ソーダ', 1.0, 'ブルーベリージュース', 0.75, '氷と一緒にかきまぜ、濾してカクテルにグラスに入れ、レモンを一絞り加える')
('オーマイゴッシュ', '桃果汁', 1.5, 'パイナップルジュース', 1.0, '氷と一緒にかきまぜ、濾してショットグラスに入れる')
('ライムフィズ', 'スプライト', 2.0, 'ライムジュース', 0.75, '氷と一緒にかきまぜ、濾してカクテルにグラスに入れる')
('キスオンザリップス', 'チェリージュース', 3.0, 'あんず果汁', 7.0, '氷の上に注いで、ストローを付ける')
('ホットゴールド', '桃果汁', 1.5, 'オレンジジュース', 6.0, '熟したオレンジジュースをマグカップに注いで、桃果汁を加える')
('ローンツリー', 'ソーダ', 1.5, 'チェリージュース', 0.75, '氷と一緒にかきまぜ、濾してカクテルにグラスに入れる')
('グレイハウンド', 'ソーダ', 2.0, 'グレープフルーツジュース', 5.0, '氷の上に注いで、よく混ぜる')
('インディアンサマー', 'アップルジュース', 1.5, 'ホットティー', 6.0, 'ジュースをマグカップに加え、ホットティーで仕上げる')
('ブルフロッグ', 'アイスティー', 1.5, 'レモネード', 5.0, '氷の上に注いでライムを一切れ加える')
('ソーダアンドイット', 'ソーダ', 2.0, 'グレープジュース', 1.0, '氷を入れずに、カクテルグラスでシェイクする')
select * from easy_drinks where main = 'スプライト'
('ライムフィズ', 'スプライト', 2.0, 'ライムジュース', 0.75, '氷と一緒にかきまぜ、濾してカクテルにグラスに入れる')

select * from easy_drinks where main = ソーダ
no such column: ソーダ

select * from easy_drinks where amount2 = 6
('ホットゴールド', '桃果汁', 1.5, 'オレンジジュース', 6.0, '熟したオレンジジュースをマグカップに注いで、桃果汁を加える')
('インディアンサマー', 'アップルジュース', 1.5, 'ホットティー', 6.0, 'ジュースをマグカップに加え、ホットティーで仕上げる')

select * from easy_drinks where second = "オレンジジュース"
('ホットゴールド', '桃果汁', 1.5, 'オレンジジュース', 6.0, '熟したオレンジジュースをマグカップに注いで、桃果汁を加える')

select * from easy_drinks where amount1 < 1.5
('ブルームーン', 'ソーダ', 1.0, 'ブルーベリージュース', 0.75, '氷と一緒にかきまぜ、濾してカクテルにグラスに入れ、レモンを一絞り加える')

select * from easy_drinks where amount2 < '1'
('ブルームーン', 'ソーダ', 1.0, 'ブルーベリージュース', 0.75, '氷と一緒にかきまぜ、濾してカクテルにグラスに入れ、レモンを一絞り加える')
('ライムフィズ', 'スプライト', 2.0, 'ライムジュース', 0.75, '氷と一緒にかきまぜ、濾してカクテルにグラスに入れる')
('ローンツリー', 'ソーダ', 1.5, 'チェリージュース', 0.75, '氷と一緒にかきまぜ、濾してカクテルにグラスに入れる')

select * from easy_drinks where main > 'トニックウォーター'
('オーマイゴッシュ', '桃果汁', 1.5, 'パイナップルジュース', 1.0, '氷と一緒にかきまぜ、濾してショットグラスに入れる')
('ホットゴールド', '桃果汁', 1.5, 'オレンジジュース', 6.0, '熟したオレンジジュースをマグカップに注いで、桃果汁を加える')

select * from easy_drinks where amount1 = '1.5'
('ブラックソーン', 'トニックウォーター', 1.5, 'パイナップルジュース', 1.0, '氷と一緒にかきまぜ、濾してカクテルにグラスに入れ、レモンを一絞り加える')
('オーマイゴッシュ', '桃果汁', 1.5, 'パイナップルジュース', 1.0, '氷と一緒にかきまぜ、濾してショットグラスに入れる')
('ホットゴールド', '桃果汁', 1.5, 'オレンジジュース', 6.0, '熟したオレンジジュースをマグカップに注いで、桃果汁を加える')
('ローンツリー', 'ソーダ', 1.5, 'チェリージュース', 0.75, '氷と一緒にかきまぜ、濾してカクテルにグラスに入れる')
('インディアンサマー', 'アップルジュース', 1.5, 'ホットティー', 6.0, 'ジュースをマグカップに加え、ホットティーで仕上げる')
('ブルフロッグ', 'アイスティー', 1.5, 'レモネード', 5.0, '氷の上に注いでライムを一切れ加える')

%