回答編集履歴

6 s

damalnylpo

damalnylpo score 51

2016/07/20 22:58  投稿

inner joinは=で結ぶ際、基本となるテーブルをどちらを置くかで結果が変わります。
その状態ではcategoriesテーブルを基点に
categoriesテーブルのceremony_idに一致するceremoniesテーブルを検索してしまい
どちらかというと
select * from categoriesに近い結果になります。
ceremoniesを基点としたい場合は
select * from ceremonies INNER JOIN ceremonies ON ceremonies.id = categories.ceremony_id;
とすることでいけるはずです。
ちなみに勝手にceremonies.idはプライマリと仮定してます  
ちょっと個人的にinner joinはあまり使わないので怪しければ
select * from ceremonies ce,categories ca WHERE ce.id = ca.ceremony_id;
で期待した結果が取得できると思います。
5 追記

damalnylpo

damalnylpo score 51

2016/07/20 22:43  投稿

inner joinは=で結ぶ際、基本となるテーブルをどちらを置くかで結果が変わります。
その状態ではcategoriesテーブルを基点に
categoriesテーブルのceremony_idに一致するceremoniesテーブルを検索してしまい
どちらかというと
select * from categoriesに近い結果になります。
ceremoniesを基点としたい場合は
select * from ceremonies INNER JOIN ceremonies ON ceremonies.id = categories.ceremony_id;
とすることでいけるはずです。
ちなみに勝手にceremonies.idはプライマリと仮定してます  
ちょっと個人的にinner joinはあまり使わないので怪しければ
select * from ceremonies ce,categories ca WHERE ce.id = ca.ceremony_id;
で期待した結果が取得できると思います。
4 修正

damalnylpo

damalnylpo score 51

2016/07/20 21:49  投稿

inner joinは=で結ぶ際、基本となるテーブルをどちらを置くかで結果が変わります。
その状態ではcategoriesテーブルを基点に
categoriesテーブルのceremony_idに一致するceremoniesテーブルを検索してしまい
どちらかというと
select * from categoriesに近い結果になります。
ceremoniesを基点としたい場合は
select * from ceremonies INNER JOIN ceremonies ON ceremonies.id = categories.ceremony_id;
とすることでいけるはずです。
とすることでいけるはずです。
ちょっと個人的にinner joinはあまり使わないので怪しければ
select * from ceremonies ce,categories ca WHERE ce.id = ca.ceremony_id;
で期待した結果が取得できると思います。
3 文法の修正

damalnylpo

damalnylpo score 51

2016/07/20 21:46  投稿

inner joinは=で結ぶ際、基点をどちらを置くかで結果が変わります。
その状態ではcategoriesテーブルのceremony_idに一致するceremoniesテーブルを検索してしまい
inner joinは=で結ぶ際、基本となるテーブルをどちらを置くかで結果が変わります。
その状態ではcategoriesテーブルを基点に
categoriesテーブルのceremony_idに一致するceremoniesテーブルを検索してしまい
どちらかというと
select * from categoriesに近い結果になります。
ceremoniesを基点としたい場合は
select * from ceremonies INNER JOIN ceremonies ON ceremonies.id = categories.ceremony_id;
とすることでいけるはずです。
2 修正

damalnylpo

damalnylpo score 51

2016/07/20 21:44  投稿

inner joinは=で結ぶ際、左右にどちらを置くかで結果が変わります。
inner joinは=で結ぶ際、基点をどちらを置くかで結果が変わります。
その状態ではcategoriesテーブルのceremony_idに一致するceremoniesテーブルを検索してしまい
どちらかというと
select * from categoriesに近い結果になります。
ceremoniesを基点としたい場合は
select * from ceremonies INNER JOIN categories ON ceremonies.id = categories.ceremony_id;
select * from ceremonies INNER JOIN ceremonies ON ceremonies.id = categories.ceremony_id;
とすることでいけるはずです。
1 追加修正

damalnylpo

damalnylpo score 51

2016/07/20 21:40  投稿

inner joinは=で結ぶ際、左右にどちらを置くかで結果が変わります。
その状態ではcategoriesテーブルのceremony_idに一致するceremoniesテーブルを検索してしまい  
どちらかというと  
select * from categoriesに近い結果になります。  
ceremoniesを基点としたい場合は
select * from ceremonies INNER JOIN categories ON ceremonies.id = categories.ceremony_id;
とすることでいけるはずです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る