
お世話になっております。
大変お手数ですがGROUP_CONCATの絞込み方法についてご教授いただけたらと思っております。
下記のようなSQL文があります。
SELECT id,rental_name,city,ward,address,area_id, GROUP_CONCAT(pid ORDER BY pid separator ',') as pids FROM rental LEFT JOIN bukken_kodawari ON id = kid WHERE 1 = 1 AND ((area_id Like "1") OR (area_id Like "2") OR (area_id Like "3")) AND ((pid LIKE "1") OR (pid LIKE "3")) GROUP BY kid
このSQL文だとpidのカラムはOR検索により1,3をどちらかが含むまれた状態で両方表示されます。
id rental_name city ward address area_id pids
6 青葉荘 名古屋市 西区 名古屋市西区名西2丁目 2 1,3
7 名西荘 名古屋市 西区 名古屋市西区名西2丁目 2 1
10 グリーンハイツ 名古屋市 西区 名古屋市西区市場木町 2 3
pidを1,3の両方が存在する箇所のみ表示したい場合、AND検索にする場合どのようにSQL文を入力したら絞込みできるでしょうか?
以下のような結果にしたいです。
id rental_name city ward address area_id pids
6 青葉荘 名古屋市 西区 名古屋市西区名西2丁目 2 1,3
AND ((pid LIKE "1") OR (pid LIKE "3")) を AND ((pid LIKE "1") AND (pid LIKE "3"))
に変更しても絞込み出来ませんでした。
いろいろ自分なりにググってみましたが答えが出てきませんでしたのでどなたか教えていただけたらと思います。
宜しくお願い致します。
###補足しました。
テーブルの定義とは SHOW FULL COLUMNS FROM rental という感じで出せば宜しいのでしょうか?
やったことないのですがとにかく各テーブルの結果を提示します。
よろしくお願いします。
もう一つの以下のSQL文もphpmyadminでは
SHOW CREATE TABLE rental; SHOW CREATE TABLE bukken_kodawari;
このような感じになってしまいます。
なのでDBのデータをダンプしてみます。
(念のため実験なので物件名は架空の物件です)
-- version 4.2.11 -- http://www.phpmyadmin.net -- -- Host: 127.0.0.1 -- Generation Time: 2016 年 5 ?E11 日 17:34 -- サーバのバージョン: 5.6.21 -- PHP Version: 5.5.19 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Database: `real_estate` -- -- -------------------------------------------------------- -- -- テーブルの構造 `area` -- CREATE TABLE IF NOT EXISTS `area` ( `area_id` int(10) NOT NULL, `ward` varchar(10) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8; -- -- テーブルのデータのダンプ `area` -- INSERT INTO `area` (`area_id`, `ward`) VALUES (1, '中村区'), (2, '西区'), (3, '昭和区'), (4, '港区'), (5, '守山区'), (6, '東区'), (7, '中区'), (8, '熱田区'), (9, '中川区'), (10, '千種区'), (11, '名東区'), (12, '緑区'), (13, '天白区'), (14, '瑞穂区'), (15, '北区'), (16, '南区'), (17, '一宮市'), (18, '北名古屋市'), (19, '豊田市'); -- -------------------------------------------------------- -- -- テーブルの構造 `bukken_kodawari` -- CREATE TABLE IF NOT EXISTS `bukken_kodawari` ( `kid` int(11) NOT NULL, `pid` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- テーブルのデータのダンプ `bukken_kodawari` -- INSERT INTO `bukken_kodawari` (`kid`, `pid`) VALUES (1, 1), (1, 2), (1, 3), (2, 1), (3, 2), (3, 3), (3, 6), (4, 3), (5, 2), (5, 6), (6, 1), (6, 3), (7, 1), (7, 6), (8, 0), (9, 0), (10, 2), (10, 3), (11, 1), (12, 2), (13, 1), (17, 0); -- -------------------------------------------------------- -- -- テーブルの構造 `particular` -- CREATE TABLE IF NOT EXISTS `particular` ( `hid` int(10) NOT NULL, `pid` int(10) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- テーブルの構造 `rental` -- CREATE TABLE IF NOT EXISTS `rental` ( `id` int(11) NOT NULL DEFAULT '0', `area_id` int(10) NOT NULL, `rental_name` varchar(100) DEFAULT NULL, `price` int(11) DEFAULT NULL, `city` varchar(20) DEFAULT NULL, `ward` varchar(20) DEFAULT NULL, `address` varchar(100) DEFAULT NULL, `memo` text, `photofilename` varchar(35) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- テーブルのデータのダンプ `rental` -- INSERT INTO `rental` (`id`, `area_id`, `rental_name`, `price`, `city`, `ward`, `address`, `memo`, `photofilename`) VALUES (1, 15, '幸村ビル', 38000, '名古屋市', '北区', '名古屋市北区上飯田南町1丁目', NULL, 'mansion.png'), (2, 15, 'レグノ 308', 79000, '名古屋市', '北区', '名古屋市北区上飯田南町5丁目', NULL, ''), (3, 15, 'センター飯田', 80000, '名古屋市', '北区', '名古屋市北区上飯田南町5丁目', NULL, ''), (4, 15, 'プリミエール 303', 61000, '名古屋市', '北区', '名古屋市北区上飯田南町5丁目', '最寄駅:新宿駅、西新宿駅から徒歩5分', 'primiale303.png'), (5, 15, 'プリミエール 203', 61000, '名古屋市', '北区', '名古屋市北区上飯田南町5丁目', NULL, ''), (6, 2, '青葉荘', 25000, '名古屋市', '西区', '名古屋市西区名西2丁目', '最寄駅:新宿駅東口から徒歩9分', 'aobasou.png'), (7, 2, '名西荘', 25000, '名古屋市', '西区', '名古屋市西区名西2丁目', NULL, ''), (8, 2, 'レオパレス平田', 30000, '名古屋市', '西区', '名古屋市西区平出町108', NULL, 'leoparess.png'), (9, 2, 'ダイソー 2階 204', 30000, '名古屋市', '西区', '名古屋市西区城町', NULL, 'daiso.png'), (10, 2, 'グリーン緑地 1階 103', 32000, '名古屋市', '西区', '名古屋市西区市場木町', NULL, 'greenHeights.png'), (11, 1, 'ハタエ2階 202', 27000, '名古屋市', '中村区', '名古屋市中村区畑江通1丁目', NULL, 'hatae.png'), (12, 1, '阿部荘 ', 32000, '名古屋市', '中村区', '名古屋市中村区向島町3丁目15', NULL, 'abesou.png'), (13, 3, '[賃貸アパート]', 10500, '名古屋市', '昭和区', '愛知県名古屋市昭和区向山町3丁目', NULL, ''), (14, 4, 'ミリアンアクア', 30000, '名古屋市', '港区', '愛知県名古屋市港区船見町', NULL, 'aquanorth205.png'), (15, 4, 'アミ当知', 33000, '名古屋市', '港区', '愛知県名古屋市港区当知3丁目', NULL, 'amitytouchi.png'), (16, 4, 'メゾン 106', 35000, '名古屋市', '港区', '愛知県名古屋市港区当知3丁目', NULL, 'mezondonova106.png'), (17, 5, 'シーズン山 102', 30000, '名古屋市', '守山区', '愛知県名古屋市守山区更屋敷', NULL, 'seazoncortmoriyama102.png'), (18, 6, 'ハイツ丘', 33000, '名古屋市', '東区', '愛知県名古屋市東区東大曽根町', NULL, 'heightssakuragaoka.png'), (19, 6, 'サンハイツ', 33000, '名古屋市', '東区', '愛知県名古屋市東区大幸1丁目', NULL, 'sanheightskoyama.png'), (20, 6, '徳川アローハイツ 301', 33000, '名古屋市', '東区', '愛知県名古屋市東区徳川1丁目', NULL, ''), (21, 7, 'ライオンズ名古屋 04010', 20000, '名古屋市', '中区', '愛知県名古屋市中区栄1丁目', NULL, 'lionsnagoyabillding.png'), (22, 7, '中区丸の内賃貸', 25800, '名古屋市', '中区', '愛知県名古屋市中区丸の内1丁目', NULL, 'marunouchi.png'), (23, 7, 'ラ・ド・ノーブル 4階 406', 35000, '名古屋市', '中区', '愛知県名古屋市中区新栄1丁目', NULL, 'ladolegidansnoble.png'), (24, 8, 'プレス宮西 1B', 29000, '名古屋市', '熱田区', '愛知県名古屋市熱田区森後町', NULL, 'buraceinjingunishi1b.png'), (25, 8, 'マ・メ東海通 104', 32000, '名古屋市', '熱田区', '愛知県名古屋市熱田区五番町', NULL, ''), (26, 8, 'ドール宮西203', 34000, '名古屋市', '熱田区', '愛知県名古屋市熱田区白鳥3丁目', NULL, ''), (27, 9, '野荘14', 22000, '名古屋市', '中川区', '愛知県名古屋市中川区野田1丁目', NULL, 'nodasou14.png'), (28, 9, '憩荘', 22000, '名古屋市', '中川区', '愛知県名古屋市中川区十番町1丁目', NULL, 'ikoisou2.png'), (29, 10, '千種吹上', 17000, '名古屋市', '千種区', '愛知県名古屋市千種区千種3丁目', NULL, 'hukiagechintai.png'), (30, 10, 'コーポ大和201', 20000, '名古屋市', '千種区', '愛知県名古屋市千種区城山新町2丁目', NULL, ''), (31, 10, '川村荘', 25000, '名古屋市', '千種区', '愛知県名古屋市千種区千種3丁目', NULL, 'kawamurasou104.png'), (32, 11, 'モールKF 4階 4B', 20000, '名古屋市', '名東区', '愛知県名古屋市名東区勢子坊2丁目', NULL, 'mollsezon4f4b.png'), (33, 11, 'メゾン・ド', 20000, '名古屋市', '名東区', '愛知県名古屋市名東区名東本通4丁目', NULL, ''), (34, 12, '辰巳荘', 19000, '名古屋市', '緑区', '愛知県名古屋市緑区鳴海町字上汐田', NULL, ''), (35, 12, 'コーポイジマ', 23000, '名古屋市', '緑区', '愛知県名古屋市緑区黒沢台2丁目', NULL, ''), (36, 13, 'メゾン・ド', 18000, '名古屋市', '天白区', '愛知県名古屋市天白区井口2丁目', NULL, ''), (39, 17, 'フォレスタ 104', 23000, '一宮市', '一宮市', '愛知県一宮市向山町1丁目36-2', NULL, ''); -- -------------------------------------------------------- -- -- テーブルの構造 `t_kodawari_key` -- CREATE TABLE IF NOT EXISTS `t_kodawari_key` ( `id` int(11) NOT NULL, `name` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- テーブルのデータのダンプ `t_kodawari_key` -- INSERT INTO `t_kodawari_key` (`id`, `name`) VALUES (1, '新築'), (2, '南向き'), (3, 'セキュリティー充実'), (4, 'システムキッチン'), (5, 'ペット可'), (6, '市街地が近い'), (7, '内装リフォーム'); -- -- Indexes for dumped tables -- -- -- Indexes for table `area` -- ALTER TABLE `area` ADD PRIMARY KEY (`area_id`); -- -- Indexes for table `bukken_kodawari` -- ALTER TABLE `bukken_kodawari` ADD UNIQUE KEY `hid` (`kid`,`pid`); -- -- Indexes for table `particular` -- ALTER TABLE `particular` ADD PRIMARY KEY (`hid`); -- -- Indexes for table `rental` -- ALTER TABLE `rental` ADD PRIMARY KEY (`id`); -- -- Indexes for table `t_kodawari_key` -- ALTER TABLE `t_kodawari_key` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `area` -- ALTER TABLE `area` MODIFY `area_id` int(10) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=20; -- -- AUTO_INCREMENT for table `particular` -- ALTER TABLE `particular` MODIFY `hid` int(10) NOT NULL AUTO_INCREMENT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; コード
ご回答いただいた皆様、誠にありがとうございました。
ベスト回答を選ぶのが大変難しかったのですが、解決した順で一番早かった方にさせて頂きました。
本当にありがとうございました。
回答5件
あなたの回答
tips
プレビュー