LoginSignup
nrr06402
@nrr06402

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

共通点はあります。何が違うのでしょうか?

Q&AClosed

どうもすみません。変な質問かもしれませんが!?
id.item_name.png

「添付画像」は「makers」と「my_items」の2つのテーブルと
最後の表は その「2つ」の[テーブルを結合]した結果です。
以下のアドレスからでも「添付画像」と同じテーブルがわかりやすくご覧になれます。
http://afurieitohannei.la.coocan.jp/sns/search.htm

さて
素朴な疑問ですが
添付画像を参考に
1) mysql> SELECT * FROM makers, my_items WHERE makers.id=my_items.maker_id;
2) mysql> SELECT * FROM makers, my_items WHERE makers.id=my_items.id;
とすると 1)2) 共に「makers」と「my_items」の2つが結合されたすべての値が出力されます。

+----+----------+----------------+--------------+----+----------+--------------+-------+----------------------+-------+---------------------+
| id | name | address | tel | id | maker_id | item_name | price | keyword | sales | created |
+----+----------+----------------+--------------+----+----------+--------------+-------+----------------------+-------+---------------------+
| 1 | 山田さん | 東京都港区 | 000-111-2222 | 1 | 1 | いちご | 180 | 赤い,甘い,ケーキ | 5 | 2018-01-01 00:00:00 |
| 1 | 山田さん | 東京都港区 | 000-111-2222 | 3 | 1 | バナナ | 120 | パック,甘い,黄色 | 16 | 0000-00-00 00:00:00 |
| 2 | 斎藤さん | 北海道小樽市 | 111-222-3333 | 2 | 2 | りんご | 90 | 丸い,赤い,パイ | 20 | 2023-01-11 06:57:21 |
| 3 | 川上さん | 神奈川県横浜市 | 222-333-4444 | 4 | 3 | ブルーベリー | 200 | 袋入り,青い,眼精疲労 | 8 | 0000-00-00 00:00:00 |
+----+----------+----------------+--------------+----+----------+--------------+-------+----------------------+-------+---------------------+
4 rows in set (0.00 sec)

それで
mysql> SELECT * FROM makers, my_items WHERE makers.id=my_items. price ;
Empty set (0.00 sec)
となるのは何故ですか?

カラムの 「id」「maker_id」「 price」のカラムの「レコードの値」はすべて「数値」なので
共通点はあります。何が違うのでしょうか?
よろしくお願いいたします。 

0

3Answer

Comments

  1. @nrr06402

    Questioner
    どうもすみません
    以後気を付けます。

mysql> SELECT * FROM makers, my_items WHERE makers.id=my_items. price ;
Empty set (0.00 sec)
となるのは何故ですか?

makers.id(値:1,2,3,4)とmy_items.price(値:180,90,120,200)とで値の一致するレコードが無いので、空行が返ってきています。

例えばmakersテーブルにmakers.id=180となるようなデータを適当に作って入れてあげると、そのmakers.id=180my_items.price=180でつながった行が返ってくると思います。

1

Comments

  1. @nrr06402

    Questioner
    ありがとうございました。

    Aンス:makersテーブルにmakers.id=180・・・!?

    どうもすみません。
    よくわかりませんでしたので

    テーブル: makers に カラム makers.id(int型) を追加して
    id 1 に makers.id=180
    id 2 に makers.id=90
    id 3 に makers.id=120
    id 4 に makers.id=200

    として

    テーブル: my_itemsの 既存の カラム makers.id
    全く同じ状態で試しました。

    id 1 に makers.id=180
    id 2 に makers.id=90
    id 3 に makers.id=120
    id 4 に makers.id=200

    以下結果です。

    返り値が空でした (行数 0)。 (Query took 0.0015 seconds.)
    SELECT * FROM makers, my_items WHERE makers.id=my_items. price

    同じ結果でした。!?

    次に 約10時間前になりますが記憶が正しければ

    既存の テーブル: my_items の カラム「price」に

    id 1 に price=180→1に変更
    id 2 に price=90 → 2に変更
    id 3 に price=120→ 3に変更
    id 4 に price=200→ 4に変更

    して

    SELECT * FROM makers, my_items WHERE makers.id=my_items. price
    としたところ

    http://afurieitohannei.la.coocan.jp/sns/search.htm

     3つ目の表となり 全部出てきました。
    なので
     共通点がないとでてこなのかな?
    よくわかりません?
     検索機能なので アルゴリズム 関連へと移行するだろうから
    複雑系な気がします。

     
  2. > テーブル: makers に カラム makers.id(int型) を追加して

    makersにあるidのことなのですでに存在しているはずです。
    なのでその操作は失敗しているはずです。

    > テーブル: my_itemsの 既存の カラム makers.id

    上記からおそらくmakers.idとmakers_idを混同しているように見えます。
    makers.idはmakersテーブルのidカラム、
    makers_idはmy_items.makers_idとも書けるmy_itemsテーブルのmakers_idカラムです

    > 返り値が空でした (行数 0)。 (Query took 0.0015 seconds.)

    テーブルの状況がわからないのでなぜそうなるかの解説は難しいです。
    こういうときはselect * from テーブル;の結果を出したほうが状況が把握しやすいと思います。

    >  共通点がないとでてこなのかな?

    そういうことです。

    試しにmy_items.price=180だけmy_items.price=1にして以下のコマンドを実行すると、
    maksers.id=1とmy_items.price=1のデータだけ結合されて表示されるので1行の結果が返ってくるはずです。

    SELECT * FROM makers, my_items WHERE makers.id=my_items.price

いつもありがとうございます。
現在検証中ですです。
大変助かります。
どうもすみません。

1) mysql> SELECT * FROM makers, my_items WHERE makers.id=my_items.maker_id;
2) mysql> SELECT * FROM makers, my_items WHERE makers.id=my_items.id;
とすると 1)2) 共に「makers」と「my_items」の2つが結合されたすべての値が出力されます。
ですが 「すべての内容が出力される」は間違いないのですが、

  1. と 2) はテーブル共通の「一意の1d」同士の検索なので
     出力内容が 1) と 2) は異なり以下となりました。 
    http://afurieitohannei.la.coocan.jp/sns/search2. …
     この場合 ( [2)]の 4番目の表ですが、 カラム表の「modified」は後で追加しました)
    この作業は
    あくまでも検索なので 1万行とかなるデータでは同じ「id」同士で検索を
    かけた場合、人は【人海戦術】しかできなため、時間がかかり、意味がない検索方法でした。

「同業者いるかいないか」 の検索だから「maker_id」で検索することで 
ちゃんと「仕分」された検索が可能となる。
何が出てくるか
この最初の問いの最後に

カラムの 「id」「maker_id」「 price」のカラムの「レコードの値」はすべて「数値」なので
共通点はあります。何が違うのでしょうか?

ですが「理論的」には
WHERE makers.id=my_items. price ;
なので 
makers.idに対しての検索なので、
makers.id(値:1,2,3,4)とmy_items.price(値:180,90,120,200)とで値の一致するレコードが無いので、空行が返ってくるのは当たり前 でした。

0

Your answer might help someone💌