
どうもすみません。変な質問かもしれませんが!?
「添付画像」は「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」のカラムの「レコードの値」はすべて「数値」なので
共通点はあります。何が違うのでしょうか?
よろしくお願いいたします。

No.1ベストアンサー
- 回答日時:
デタラメなことをやってるからです。
SELECT 選択リスト FROM 表1,表2
[WHERE 条件式]
は、CROSS JOINまたはINNER JOINです。
条件式に結合条件がないと、CROSS JOIN、結合条件があるとINNER JOINになります。
INNER JOINの構文にすると、次のようになります。
SELECT 選択リスト FROM 表1
INNER JOIN 表2
ON 表1と表2の結合条件
makers.id=my_item.makers_id
→メーカーを区別するidとアイテムのメーカーidの対応付けなので、これだけが正しい
makers.id=my_items.id
→メーカーを区別するidとアイテムを区別するidでたまたま一致したデタラメな結合データが得られる。
今回はたまたま一致するものがあり、デタラメな結合結果が返された。
makers.id=my_item.price
→メーカーを区別するidとアイテムの価格がたまたま一致した場合、デタラメな結合データが得られる。
たまたま一致するものもなく、デタラメな結合結果も返されなかった。
何をやってるのか、何をやりたいのかまったく理解できません。
ネット記事、マニュアル、書籍など何も調べずにデタラメなことをやってるのは時間の無駄です。
知的好奇心で色々なことを試すのとは違い、何をやってるのか本人が分からずにデタラメをやってるのは問題です。
SQLの習得に、何ら役に立ちません。
ありがとうございます。
どうもすみません。
助かっています。
バカ、くそ みたいな、「でたらめな」ことをやらないと
真実が見えてこないのかな・・です。
理論的な思考回路は私にはないです。
くそ見たいな質問をすることで
真実に近づく・・・ですね--
join ですね
次のページにありますね!
LEFT JOIN、RIGHT JOIN ---外部結合
数年前勉強した分を他の参考書で、やり直しています。
行き詰まている人はには わかりやすいのかなーですが
自己満足 かもしれませんね!?
今後ともよろしくお願いいたします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Oracle SQL update方法 2 2022/06/22 14:07
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL UPDATE my_items SET item_name '赤い,甘い,ケーキ' WHERE id 1 2023/01/03 09:52
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
【Transact-sql】 execの結果を...
-
SQLにて特定の文字を除いた検索...
-
SQLサーバから、項目の属性(型...
-
複数テーブルのGROUP BY の使い...
-
キー毎の、ある列のmaxのレコー...
-
sqlで、600行あるテーブルを100...
-
selectした大量データをinsert...
-
Excel2000でレーダーチャートの...
-
副問合せの書き方について
-
【初心者】特定の文字に色をつ...
-
このSQL文の意味を教えてくださ...
-
[MySQL] 3つのテーブルの結合で...
-
Mysql でレコードを追加した時...
-
mysqlのload data infileで連番...
-
ネットに繋がらなくなりました。
-
HAVING count()で重複したデー...
-
URL と行番号の指定
-
VIEWの元のテーブルのindexって...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
sqlで、600行あるテーブルを100...
-
select文のwhere句に配列を入れ...
-
SQLにて特定の文字を除いた検索...
-
WordpressのContact form 7でzi...
-
SQLサーバから、項目の属性(型...
-
VIEWの元のテーブルのindexって...
-
クエリ表示と、ADOで抽出したレ...
-
マイクラPC版のコマンドで効率...
-
【Transact-sql】 execの結果を...
-
SQL Left Join で重複を排除す...
-
エラー 1068 (42000): 複数の主...
-
[MySQL] UNIQUE制約の値を更新...
-
inner joinをすると数がおかし...
-
1テーブル&複数レコードの更新...
-
Access パラメータクエリをcsv...
-
期間の重複を調べるSQL文につい...
-
Unionした最後にGROUP BYを追加...
-
Updateの複数テーブル条件時のL...
おすすめ情報
いつもありがとうございます。
現在検証中ですです。
大変助かります。
どうもすみません。
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」で検索することで
ちゃんと「仕分」された検索が可能となる。
次に
「makers.id」に対して「my_items. price」 で検索をかけると
何が出てくるか
この最初の問いの最後に
-------------------------------------------
カラムの 「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)とで値の一致するレコードが無いので、空行が返ってくるのは当たり前 でした。