1限目:てきとうに復習(join関連)

2限目:テーブル名を変更するエイリアス

3限目以降:PHP/MySQLの課題
    →モデルの写真撮影会のスケジュール登録
      K氏、全て託しました・・・!
      説明用:http://beauty.hotpepper.jp/CSP/bt/reserve/afterCoupon

[機能概要]
◎ログイン(Pear::Auth使う?)
◎新規会員登録(メール登録or直登録)
 ※メールの場合、送られてくるメールにDBに登録したアカウントと紐付けるパラメータつける
◎カレンダー
http://beauty.hotpepper.jp/CSP/bt/reserve/?storeId=H000264750をベースにする?
 ※「このクーポンで予約する」ボタンで遷移した先。
 #先月・今月・来月の表示。
○モデルの指定&検索
○モデル側の登録ページ
△お気に入りモデルの登録
 (スケジュールが登録されるとお知らせメールが会員に送られる)
○セキュリティ対策(下記のあたり)
 クロスサイトスクリプティング
 パラメータの改ざん
 クロスサイトリクエストフォージェリ
 参考:http://www.itmedia.co.jp/enterprise/articles/0506/16/news030.html


2限目分
まず下記4テーブル作成します。
#右側のカラム要素表示は「SHOW CORUML FROM テーブル名」で表示したものです。

【products】
WS000138WS000139

【supplier】
WS000008WS000007

【telbook】
WS000002WS000001

【order】
WS000005WS000006


さて本題。

「テーブル.カラム名」と記載する項目が多いと
コーディングするの面倒ですよね?
それをテーブル名を指定する部分で「order o」と別名を記述することで
記述量を減らすことが出来ます。
select o.farm_name, s.address, s.rep_name,t.tel,
p.name, p.price, o.arrival_date, o.order_num,
sum(order_num) AS stock, p.etc
FROM orders o
LEFT JOIN products p using(name)
LEFT JOIN supplier s using(farm_name)
LEFT JOIN telbook t using(rep_name)
結果
WS000009


上記ソースを改変して「GROUP BY ~ HAVING~」を追加。
※表示項目が少し変わってるので注意
select 
o.farm_name, s.address, s.rep_name,
t.tel,p.name, p.price, o.arrival_date, o.order_num,
sum(order_num) AS stock, p.etc
FROM orders o
LEFT JOIN products p using(name)
LEFT JOIN supplier s using(farm_name)
LEFT JOIN telbook t using(rep_name)
GROUP BY name
HAVING stock<30 
WS000010


ちょい説明詳しくします。
まずGROUP BY と HAVING抜いた状態だとこうなります。
order_numとstockの値が違ってて「んん?」ってなると思います。
WS000011
「GROUP BY name」と付けるとstock=70の内訳が判明します
WS000012
次に「HAVING」。stockが30のものは「津軽ファーム」のみなので、
「HAVING stock<30」とすると、1行だけが表示されます。
WS000010

課題の割り振りはざっくり決めたけど、テーブルの数、必要要素とか決めてない\(^o^)/
1人で決めるだけなら早いんだけどね、、、