*ブログに戻る →ここ です。


1,ANY
2,ALL句[以外をさがす<>]
3,EXISTS句

ANYとALLとEXISTSの違いが分らない
ほとんど違わない気がしますが・・・理解できないよ〜 メモします free93

Friday,August,2,2013

PHPのおさらいを優先したいので、理解できていないが流します

今回2つのデータベースdbを使う
sadachika_shop
kittaka_shop
以下の二つのテーブル名
sadachi_newcustomer
kitta_customer

○特定のデータベース内のテーブル 
SHOW TABLES FROM sadachika_shop;
SHOW TABLES FROM Kittaka_shop;

○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_customer;
sada_id   sada_name
1         長谷川
2         稲垣
3         定近*重複
4         橘高*重複
5         平山*重複
6         藤原*重複
7         松本
8         小林
9         三谷*重複
10        坂本*重複
11        楠
12        中島

mysql> select * from Kittaka_shop.kitta_newcustomer;
kit_id    kit_name   kit_d
1         山田       2013-08-01
2         藤原*重複  2013-08-01
3         渡辺       2013-08-01
4         坂本*重複  2013-08-01
5         船越       2013-08-01
6         安藤       2013-08-01
7         平山*重複  2013-08-01
8         高垣       2013-08-01
9         定近*重複  2013-08-01
10        橘高*重複  2013-08-01
11        山脇       2013-08-01
12        三谷*重複  2013-08-01

○○ALL句  データの取得[以外をさがす<>]該当しないものを選び出す。
○○「kitta_newcustomer」テーブルの「kit_name」カラムの値が「sadachi_customer」テーブルの「sada_name」カラムに格納されている値[以外<>]を探す。
                         ↓データベース名      ↓テーブル名
mysql> select * FROM sadachika_shop.sadachi_customer 
    -> WHERE sada_name <> ALL (select kit_name FROM Kittaka_shop.kitta_newcustomer);
               ↑カラム名 ↑ALLは?機能が分らない
sada_id   sada_name
1         長谷川
2         稲垣
7         松本
8         小林
11        楠
12        中島


失敗○  データの取得[ALLで同一の値を探し出す=  計画からして間違ってるのかも?]?
     「kitta_newcustomer」テーブルの「kit_name」カラムの値が「sadachi_customer」テーブルの「sada_name」カラムに格納されている値を探す。
                         ↓データベース名      ↓テーブル名
mysql> select * FROM sadachika_shop.sadachi_customer 
    -> WHERE sada_name = ALL (select kit_name FROM Kittaka_shop.kitta_newcustomer);
               ↑カラム名 ↑ALLは、条件に該当する複数の値を探す
Empty set (0.00 set)
*イコールの計算式では失敗している、何が失敗しているのかもよく分らない?

○○EXISTS句
○○いまいちよく理解できていませんANY句と同じなんですけれど・・・PHPを復習したいので流そう
mysql> select * from sadachika_shop.sadachi_customer WHERE EXISTS 
    -> (select kit_name FROM Kittaka_shop.kitta_newcustomer WHERE sadachi_customer.sada_name = kitta_newcustomer.kit_name);
sada_id   sada_name
3         定近
4         橘高
5         平山
6         藤原
9         三谷
10        坂本
*ANY句を使った時と同じ回答
*計算式が存在しないところに注目すべき、存在してるな?ANY句でよくないか?

失敗○mysql> select * from sadachika_shop.sadachi_customer WHERE EXISTS 
          -> (select sada_name FROM Kittaka_shop.kitta_newcustomer WHERE sadachi_customer.sada_name = kitta_newcustomer.kit_name);
                 ↑これじゃERRORだよね



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

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

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