リレーション

リレーション

  • 複数のテーブルに情報をわけて管理し、必要に応じて組み合わせて使う
生産者用のテーブルを使う
  • 「mydb」に新規テーブル「makers」をフィールド数「4」で作成する
  • 「id」は「プライマリーキー」「オートインクリメント」

  • SQLを実行しデータを挿入する
INSERT INTO makers SET name='山田さん', address='東京都港区', tel='000-111-2222';
INSERT INTO makers SET name='斉藤さん', address='北海道小樽市', tel='111-222-3333';
INSERT INTO makers SET name='川上さん', address='神奈川県横浜市', tel='222-333-4444';

テーブルを結びつけるフィールドを作る
  • 「my_items」idの後に「maker_id」フィールドを追加する

  • 生産者の値を追加する

複数のテーブルを横断して検索する

(1)商品1の情報を取り出す。

SELECT maker_id FROM my_items WHERE id=1;


(2)そのデータの「maker_id」で、生産者IDが「1」であることを知ります。


(3)生産者ID「1」の情報を検索します。

SELECT * FROM makers WHERE id=1;

リレーションを使う

  • Relation(関係性)
  • 複数のテーブルをその関連性からつないで1つのテーブルのようにして扱うことができます
SELECT * FROM makers, my_items WHERE my_items.id=1 AND makers.id=my_items.maker_id;

SELECT * FROM makers, my_items WHERE makers.id=my_items.maker_id;

WHERE でリレーションを貼る
  • 「makerテーブルのid」と「my_itemsテーブルのmaker_id」が一致したデータを検索する


... AND makers.id=my_items.maker_id;

ここでは、my_itemsテーブルに記録されている「maker_id」というフィールド(my_items.maker_id)を元に、makersテーブルの「id」フィールドと情報(makers.id)を照合して引き出したいので、

makers.id=my_items.maker_id
テーブル名のショートカット
  • makersを「m」、my_itemsを「i」と指定

SELECT * FROM makers, my_items WHERE my_items.id=1 AND makers.id=my_items.maker_id;

が、

SELECT * FROM makers m, my_items i WHERE i.id=1 AND m.id=i.maker_id;