お世話になっております。お恥ずかしい内容かと思いますが、表題のWHERE句でのCONCATが効かず、その理由がわからずに困っています。
以下がその実際のSQL
SELECT re_property_data.data_no, re_property_data.data_master_no, re_property_data.data_property_name, re_property_data.data_houi, re_property_data.data_madori1, re_property_data.data_madori2, re_property_data.data_genkyou, re_property_data.data_price, re_property_data.data_kanrihi, re_property_data.data_reikin, re_property_data.data_shikikin, re_property_data.data_kyouekihi, re_property_data.data_chuukai_tesuuryou, re_property_data.data_menseki, re_property_data.data_menseki_tani, re_property_data.data_update_date, re_property_data.data_state, re_master_rent.master_no, re_master_rent.master_member_no, re_master_rent.master_cate_m_no, re_master_rent.master_property_name, re_master_rent.master_pr, re_master_rent.master_addr1, re_master_rent.master_addr2, re_master_rent.master_addr3, re_master_rent.master_kouzou, re_master_rent.master_tatemono_kaisuu_chijou, re_master_rent.master_kenchiku_year, re_master_rent.master_kenchiku_month, re_master_rent.master_train1, re_master_rent.master_train_station1, re_master_rent.master_train_station_toho1, re_master_rent.master_train2, re_master_rent.master_train_station2, re_master_rent.master_train_station_toho2, re_master_rent.master_bas, re_master_rent.master_bas_toho, re_master_rent.master_parking, re_master_rent.master_parking_price, re_master_rent.master_img1, re_master_rent.master_update_date, re_master_rent.master_state, re_master_osusume.mo_no, re_master_osusume.mo_master_no, re_master_osusume.mo_osusume_no, zip.group_code, zip.addr2, zip.addr_no FROM re_property_data LEFT JOIN re_master_rent ON re_property_data.data_master_no = re_master_rent.master_no LEFT JOIN zip ON re_master_rent.master_addr2 = zip.addr2 LEFT JOIN re_master_osusume ON re_master_rent.master_no = re_master_osusume.mo_master_no WHERE re_property_data.data_state = '' AND (CONCAT('re_master_rent.master_train_station1','re_master_rent.master_train_station2') = '五反田' OR CONCAT('re_master_rent.master_train_station1','re_master_rent.master_train_station2') = '目黒') AND re_master_rent.master_cate_m_no = '1'
以下はCONCATを使わない内容で、これだと上手く行く
SELECT re_property_data.data_no, re_property_data.data_master_no, re_property_data.data_property_name, re_property_data.data_houi, re_property_data.data_madori1, re_property_data.data_madori2, re_property_data.data_genkyou, re_property_data.data_price, re_property_data.data_kanrihi, re_property_data.data_reikin, re_property_data.data_shikikin, re_property_data.data_kyouekihi, re_property_data.data_chuukai_tesuuryou, re_property_data.data_menseki, re_property_data.data_menseki_tani, re_property_data.data_update_date, re_property_data.data_state, re_master_rent.master_no, re_master_rent.master_member_no, re_master_rent.master_cate_m_no, re_master_rent.master_property_name, re_master_rent.master_pr, re_master_rent.master_addr1, re_master_rent.master_addr2, re_master_rent.master_addr3, re_master_rent.master_kouzou, re_master_rent.master_tatemono_kaisuu_chijou, re_master_rent.master_kenchiku_year, re_master_rent.master_kenchiku_month, re_master_rent.master_train1, re_master_rent.master_train_station1, re_master_rent.master_train_station_toho1, re_master_rent.master_train2, re_master_rent.master_train_station2, re_master_rent.master_train_station_toho2, re_master_rent.master_bas, re_master_rent.master_bas_toho, re_master_rent.master_parking, re_master_rent.master_parking_price, re_master_rent.master_img1, re_master_rent.master_update_date, re_master_rent.master_state, re_master_osusume.mo_no, re_master_osusume.mo_master_no, re_master_osusume.mo_osusume_no, zip.group_code, zip.addr2, zip.addr_no FROM re_property_data LEFT JOIN re_master_rent ON re_property_data.data_master_no = re_master_rent.master_no LEFT JOIN zip ON re_master_rent.master_addr2 = zip.addr2 LEFT JOIN re_master_osusume ON re_master_rent.master_no = re_master_osusume.mo_master_no WHERE re_property_data.data_state = '' AND (re_master_rent.master_train_station1 = '五反田' OR re_master_rent.master_train_station2 = '五反田' OR re_master_rent.master_train_station1 = '目黒' OR re_master_rent.master_train_station2 = '目黒') AND re_master_rent.master_cate_m_no = '1'
両者の違いは、WHERE句の中で、その違う箇所は
(CONCAT('re_master_rent.master_train_station1','re_master_rent.master_train_station2') = '五反田' OR CONCAT('re_master_rent.master_train_station1','re_master_rent.master_train_station2') = '目黒') または (re_master_rent.master_train_station1 = '五反田' OR re_master_rent.master_train_station2 = '五反田' OR re_master_rent.master_train_station1 = '目黒' OR re_master_rent.master_train_station2 = '目黒')
この部分ですが、何かおかしいところはあるのでしょうか?
各カラムには単体の駅名だけが記録されており(インデックス設定などもしていない)、その駅名を検索する内容となってます。
CONCATの方がスマートに記述できるのでこちらを使いたいと思っているのですが、そもそも誤った使い方なのか?それさえ不明でご教示いただければと質問した次第です。
アドバイスのほど、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/16 00:17
2019/05/16 01:56