質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

1984閲覧

対象のテーブルのすべてのカラムを検索対象にしたい

earnest_gay

総合スコア615

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/08/29 09:22

対象のテーブルのすべてのカラムを対象にした検索のSQL文はどのように書けばよいでしょうか?

フリーワードで何か調べたいとします。
その対象となるテーブルは下記ですが、どのように改良すればよいでしょうか?

宜しくお願いします。

SELECT a.`id`, a.`title`, a.`area`, a.`buildingtype`, a.`floorplan`, a.`rento`, a.`deposit`, a.`keymoney`, a.`body`, a.`created`, a.`modified`, c.`companyName` FROM articles a INNER JOIN users u ON a.`user_id` = u.`id` INNER JOIN companys c ON u.`company_id`= c.`id` WHERE title LIKE ? LIMIT 15 ";
MariaDB [test]> SHOW CREATE TABLE companys; SHOW CREATE TABLE users; SHOW CREATE TABLE articles +----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | companys | CREATE TABLE `companys` ( `id` int(11) NOT NULL AUTO_INCREMENT, `campanyName` varchar(50) NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 | +----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.02 sec) +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | users | CREATE TABLE `users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `company_id` int(11) NOT NULL, `username` varchar(50) CHARACTER SET latin1 DEFAULT NULL, `password` varchar(255) CHARACTER SET latin1 DEFAULT NULL, `surname` varchar(20) COLLATE utf8_unicode_ci NOT NULL, `name` varchar(20) COLLATE utf8_unicode_ci NOT NULL, `role` varchar(20) CHARACTER SET utf8 DEFAULT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `modified` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci | +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) -> ; +----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | articles | CREATE TABLE `articles` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `title` varchar(30) COLLATE utf8_unicode_ci NOT NULL, `area` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `buildingtype` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `floorplan` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `rento` int(11) NOT NULL, `deposit` int(11) NOT NULL, `keymoney` int(11) NOT NULL, `body` text COLLATE utf8_unicode_ci NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `modified` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

すべてのカラムを対象にした検索

LIKE検索をしたいということですか?
とにかくカラムを列記して、ユニークな名称をつけ
あとはWHERE句ですべてのカラムをORでつなぎます

MySQL

1select 2a.id as a_id, 3a.user_id, 4a.title, 5a.area, 6a.buildingtype, 7a.floorplan, 8a.rento, 9a.deposit, 10a.keymoney, 11a.body, 12a.created as a_created, 13a.modified as a_modified, 14u.company_id, 15u.username, 16u.password, 17u.surname, 18u.name, 19u.role, 20u.created as u_created, 21u.modified as u_modified, 22c.campanyName, 23c.created as c_created 24FROM articles a 25INNER JOIN users u ON a.user_id = u.id 26INNER JOIN companys c ON u.company_id= c.id 27WHERE 0 28OR a.id LIKE concat('%',?,'%') 29OR a.user_id LIKE concat('%',?,'%') 30OR a.title LIKE concat('%',?,'%') 31・・・・

投稿2016/08/29 09:38

編集2016/08/29 09:39
yambejp

総合スコア114833

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

OR で検索条件をつなげばよろしいかと思います。

投稿2016/08/29 09:32

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

earnest_gay

2016/08/30 00:56

ありがとうございます。 検索条件の数だけSQLを用意するのだと思ってましたが、1つのSQL文内でORなどで繋げていくということですね。
guest

0

Kosuke_Shibuyaさんが書かれたように地道に条件文をつくるのが
いいと思います。横断検索をしたいようですが、カラムによって
属性も違うようですから、一意にぱぱっと書けるものでもない
ですよね? 少しやりたいことを整理してみてはいかがでしょうか。

投稿2016/08/29 10:38

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

(意図と違うかもしれませんが、)下記SQLでシステムテーブルから動的にテーブルのカラムリストを取得してSQLをPHPで組み立てればDB名、テーブル名を指定するだけで動的になるかと。

SQL

1SELECT 2 table_schema -- データベース名 3 ,table_name -- テーブル名 4 ,column_name -- カラム名 5 ,data_type -- タイプ 6FROM 7 information_schema.columns 8 where table_schema ='データベース名' and table_name = 'テーブル名';

投稿2016/08/29 10:20

roast_chicken

総合スコア254

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問