解決済みの質問
select文の外部結合について
select文の外部結合について
いつもお世話になります。
select文について質問です。以下のように2つのテーブルがありtable1は全レコード抽出し、table2はtable1に条件合致している場合のみtable2の項目を抽出しますがtable2の項目が全く取得できません。
ちなみにMS_AccessにてODBC経由でMySQLに接続し、選択クエリを作成しSQL文を確認しましたが、私が作成したphp上のSQL文と基本的に相違はありませんでした。
(※環境は、php4+MySQL)
table1:
・col1(主キー)
・col2
・col3
table2:
・colA(主キー)
・colB(主キー)
・colC(主キー)
・colD
・colE
select t1.col1,t1.col2,t1.col3,t2.colD,t2.colE
from (table1 as t1 LEFT JOIN table2 as t2
ON (t1.col1 = t2.colA) and (t1.col3 = t2.colC))
order by t1.col1
以上、よろしくお願い致します。
- 補足
- MySQLのバージョンは3.23.54です。
MyODBCは、MYSQL専用ODBCドライバ「MyODBC」です。
(t1.col1 = t2.colA) and (t1.col3 = t2.colC)の条件に合致するデータは
table2に存在します。
-
- 質問日時:
- 2007/2/4 14:03:40
-
- 解決日時:
- 2007/2/19 03:02:43
-
- 回答数:
- 3
-
- お礼:
- 知恵コイン
- 50枚
-
- 閲覧数:
- 2,950
-
- ソーシャルブックマークへ投稿:
- Yahoo!ブックマークへ投稿
- はてなブックマークへ投稿
- (ソーシャルブックマークとは)
ベストアンサーに選ばれた回答
LEFT JOIN に問題あるとおもいます。
理由:
t1.col1 は主キーですから、一つしか存在しまん。
table2:
・colA(主キー)
・colB(主キー)
・colC(主キー)をあわせてユニークになりますから
>ON (t1.col1 = t2.colA) and (t1.col3 = t2.colC) 条件は
tiのレコードに対し条件に合うt2には複数存在します。
それを全部取得したいですよね。
解決方法:
①
LEFT JOIN → RIGHT JOIN
②
LEFT JOIN →FULL OUTER JOIN
DB管理システムによっては
LEFT JOIN →JOIN
つまり、左結合がまずかったです。
- 違反報告
- 回答日時:2007/2/4 17:01:13
この質問は投票によってベストアンサーが選ばれました!
- この質問・回答は役に立ちましたか?
- 役に立った!
お役立ち度:
1人が役に立つと評価しています。
ベストアンサー以外の回答
(2件中1〜2件)
- 並べ替え:回答日時の
- 新しい順
- |
- 古い順
SQLとしては間違っているように見えません。
このSQLはMySQLクライアントから実行して確認してみたのですか?
ACCESSとかODBCは使ったことないので、原因かどうかわかりません。
- 違反報告
- 回答日時:2007/2/4 19:24:04
MySQLのバージョンは?
ODBCドライバは、誰が提供しているドライバですか?
>(t1.col1 = t2.colA) and (t1.col3 = t2.colC)
この条件を満たすデータは、table2に存在するのですか?
- 違反報告
- 回答日時:2007/2/4 15:49:39


