質問: 'A02' and c.id=1 ``` ### 試したこと 色々リサーチし、順序変えたりして試しましたがどこが文法的におかしいのか見当がつきません。 ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報 テーブル create table customer ( id int not null auto_increment primary key, name varchar(50), sex tinyint(1), birthplace tinyint(2), position tinyint(2) ); create table hanyo ( code varchar(3), subcode varchar(3), name text ); データ insert into customer (name,sex,birthplace,position) values ('山田太郎',1,2,2), ('町村洋子',2,2,1) insert into hanyo (code,subcode,name) values ('A01',1,'男'), ('A01',2,'女'), ('A02',1,'マネージャ'), ('A02',2,'担当')
回答: 文法的にjoin onの次は連結条件であってwhere句ではないです。 joinは表の連結、whereは行の抽出をあくまで担当しています。 多分こう書きたいのではないかと推測します。 ``` select * from customer as c left join hanyo as h1 on c.sex = h1.subcode and h1.code = 'A01' left join hanyo as h2 on c.birthplace = h2.subcode and h2.code = 'A02' where c.id=1 ``` 擬似的にh1.codeに対してwhere句をかけているように見えますが意味は厳密には違います。 ``` select * from customer as c left join hanyo as h1 on c.sex = h1.subcode left join hanyo as h2 on c.birthplace = h2.subcode where c.id=1 and h1.code = 'A01' and h2.code = 'A02' ```