3つのテーブルからそれぞれ2つのカラムを選んで結合し重複の値を1つとして数え表示する
3つのテーブルからそれぞれ2つのカラムを選んで結合し全て表示する free86

Tuesday,July,30,2013

今回3つのデータベースdbを使う
sadachika_shop
kittaka_shop
hirayama_shop

○データベースを作る
mysql> create database hirayama_shop;
Query OK, 1 row affected (0.05 sec)
○データベースを見る
MySQL> show databases;
Database
hirayama_shop     *新しく作成された
Kittaka_shop      *今回はこのdbを使う
sadachika_books
sadachika_shop    *今回はこのdbを使う

○特定のデータベース内のテーブル 
SHOW TABLES FROM sadachika_shop;
sadachi_user*このテーブル名を使いたいのでテーブル名を変更して、別途新設する
○テーブルの名前を変更する                                                       ↓新しいテーブル名
mysql> alter table sadachika_shop.sadachi_user rename to sadachika_shop.sadachi_lessonuser;
Query OK, 0 rows affected (0.14 sec)
○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_user;        *表示されない
mysql> select * from sadachika_shop.sadachi_lessonuser;  *表示された

テーブルを作る
mysql> create table sadachika_shop.sadachi_user (sada_username varchar(10), sada_address varchar(10));
Query OK, 0 rows affected (0.11 sec)
mysql> create table Kittaka_shop.kitta_request (kit_name varchar(10), kit_address varchar(10), kit_d date);
Query OK, 0 rows affected (0.01 sec)
mysql> create table hirayama_shop.hiraya_seminar (hira_sid int, hira_name varchar(10), hira_address varchar(10));
Query OK, 0 rows affected (0.00 sec)

値の重複を避けるには、プライマリキーやユニークを使うが、今回は苗字が同一だったり、建物が同じ可能もあるので使うのを避ける
int(11) not null primary key
varchar(20) unique

mysql> insert into sadachika_shop.sadachi_user values('鈴木', '大阪府大阪市'),('佐藤', '岡山県岡山市'),('定近', '広島県府中市'),
    ->('定近', '東京都荒川区'),('横山', '東京都荒川区');
Query OK, 5 rows affected (0.06 sec)
Records: 5 Duplicates: 0 Warnings: 0

mysql> insert into Kittaka_shop.kitta_request values('鈴木', '大阪府大阪市',20130730),('小林', '東京都荒川区',20130730),
    ->('佐藤', '岡山県岡山市',20130730),('定近', '広島県府中市',20130730),('橘高', '広島県笠岡市',20130730), 
    ->('平山', '福岡県福岡市',20130730),('本田', '東京都荒川区',20130730),('定近', '東京都荒川区',20130730);
Query OK, 8 rows affected (0.03 sec)
Records: 8 Duplicates: 0 Warnings: 0

mysql> insert into hirayama_shop.hiraya_seminar values(1, '佐藤', '岡山県岡山市'),(1, '定近', '広島県府中市'),(1, '定近', '東京都荒川区'),
    ->(2, '橘高', '広島県笠岡市'),(2, '平山', '福岡県福岡市'),(2, '松田', '福岡県福岡市');
Query OK, 6 rows affected (0.02 sec)
Records: 6 Duplicates: 0 Warnings: 0

○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_user;
sada_username   sada_address
鈴木            大阪府大阪市*重複
佐藤            岡山県岡山市*重複
定近            広島県府中市*重複
定近            東京都荒川区   *住所別重複
横山            東京都荒川区
5 rows in set (0.00 sec)

mysql> select * from Kittaka_shop.kitta_request;
kit_name    kit_address        kit_d
鈴木        大阪府大阪市       2013-07-30*重複
小林        東京都荒川区       2013-07-30
佐藤        岡山県岡山市       2013-07-30*重複
定近        広島県府中市       2013-07-30*重複
橘高        広島県笠岡市       2013-07-30   *重複
平山        福岡県福岡市       2013-07-30   *重複
本田        東京都荒川区       2013-07-30
定近        東京都荒川区       2013-07-30   *住所別重複
8 rows in set (0.00 sec)

mysql> select * from hirayama_shop.hiraya_seminar;
hira_sid   hira_name     hira_address
       1   佐藤          岡山県岡山市*重複
       1   定近          広島県府中市*重複
       1   定近          東京都荒川区   *住所別重複
       2   橘高          広島県笠岡市   *重複
       2   平山          福岡県福岡市   *重複
       2   松田          福岡県福岡市
6 rows in set (0.00 sec)

○○○3つのテーブルからそれぞれ2つのカラムを選んで結合し重複の値を1つとして数え表示する
mysql> select sada_username, sada_address FROM sadachika_shop.sadachi_user 
    -> UNION SELECT kit_name, kit_address FROM Kittaka_shop.kitta_request 
    -> UNION SELECT hira_name, hira_address FROM hirayama_shop.hiraya_seminar;

sada_username   sada_address
鈴木            大阪府大阪市
佐藤            岡山県岡山市
定近            広島県府中市
定近            東京都荒川区
横山            東京都荒川区
小林            東京都荒川区
橘高            広島県笠岡市
平山            福岡県福岡市
本田            東京都荒川区
松田            福岡県福岡市
10 rows in set (0.00 sec)

○○長文
mysql> select sadachi_user.sada_username, sadachi_user.sada_address FROM sadachika_shop.sadachi_user 
    -> UNION SELECT kitta_request.kit_name, kitta_request.kit_address FROM Kittaka_shop.kitta_request 
    -> UNION SELECT hiraya_seminar.hira_name, hiraya_seminar.hira_address FROM hirayama_shop.hiraya_seminar;




○○○3つのテーブルからそれぞれ2つのカラムを選んで結合し全て表示する
mysql> select sada_username, sada_address FROM sadachika_shop.sadachi_user 
    -> UNION ALL SELECT kit_name, kit_address FROM Kittaka_shop.kitta_request 
    -> UNION ALL SELECT hira_name, hira_address FROM hirayama_shop.hiraya_seminar;

sada_username   sada_address
鈴木            大阪府大阪市
佐藤            岡山県岡山市
定近            広島県府中市
定近            東京都荒川区
横山            東京都荒川区
鈴木            大阪府大阪市*重複
小林            東京都荒川区
佐藤            岡山県岡山市*重複
定近            広島県府中市*重複
橘高            広島県笠岡市
平山            福岡県福岡市
本田            東京都荒川区
定近            東京都荒川区*重複
佐藤            岡山県岡山市*重複
定近            広島県府中市*重複
定近            東京都荒川区*重複
橘高            広島県笠岡市*重複
平山            福岡県福岡市*重複
松田            福岡県福岡市

19 rows in set (0.06 sec)



* 参考にしたサイトは→ こちら です。

これは赤色の文字例です。

これは青色の文字例です。