- ベストアンサー
MYSQL5.0 SQLの会員検索条件の書き方
- 会員検索のページで使用するMYSQL5.0 SQLの書き方について教えてください。
- テーブル(USER_TBL)には、ユーザーID、趣味1~5の列があります。検索画面では趣味1~5のチェックボタンを用意し、選択された趣味と一致する会員を3名抽出するSELECT文を教えてください。
- SELECT文では、各趣味の値が「1」かつ合致する数が多い順に3名を抽出する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
関連するQ&A
- SQLの条件検索について
下記のような「果物TBL」というテーブルがあるとします。 果物TBL -------------------------------- ID 名前 値段 - - - - - - - - - - - - - - - - - - - - 01 りんご 150 02 バナナ 250 03 みかん 250 04 ぶどう 300 -------------------------------- また上記のテーブルと全く同じ構成の「果物検索TBL」というテーブルがあるとします。 そのテーブルには、例として下記のような値を入れておきます。 果物検索TBL -------------------------------- ID 名前 値段 - - - - - - - - - - - - - - - - - - - - NULL りんご 250 NULL バナナ NULL -------------------------------- この時、下記のようなSQLだと SELECT DISTINCT 果物TBL.名前 FROM 果物TBL INNER JOIN 果物検索TBL ON (果物TBL.ID = 果物検索TBL.ID AND LEN(果物検索TBL.ID) > 0) OR (果物TBL.名前 = 果物検索TBL.名前 AND LEN(果物検索TBL.名前) > 0) OR (果物TBL.値段 = 果物検索TBL.値段 AND LEN(果物検索TBL.値段) > 0); -------------------------------- 名前 - - - - - - - - - - - - - - - - - - - - バナナ みかん りんご -------------------------------- という結果になります。(名前:りんご・バナナと値段:250のOR検索) その結果を -------------------------------- 名前 - - - - - - - - - - - - - - - - - - - - バナナ -------------------------------- という結果にするにはどうすればいいでしょうか?(名前:りんご・バナナと値段:250のAND検索、バナナのみマッチ) 単純にORをANDにしてもうまくいきませんでした。 動的にSQLを作れれば良いのですが、この構成は変えられないのでNULL値がネックになり分かりません。 教えてください。 また、記載してるSQLよりもっとスマートな書き方があれば教えてください。
- ベストアンサー
- その他(データベース)
- 別テーブルの行数を利用してソートしたい
MySQLバージョン4.1.16を使用しています。 テーブル「tbl1」をテーブル「tbl2」の「msg」カラムの行数を利用して ソートしたいのですが、どのようなSQL文になるのでしょうか? 以下の例だと、tbl2のuser_idがbbbbのmsg数の方が多いので descで並べるとtbl1はbbbb、aaaaの順になるようにしたいです。 テーブル「tbl1」 +----------+ | user_id | +----------+ | aaaa | +----------+ | bbbb | +----------+ テーブル「tbl2」 +----------+---------+ | user_id | msg | +----------+---------+ | bbbb | ああ | +----------+---------+ | aaaa | いい | +----------+---------+ | bbbb | うう | +----------+---------+ SELECT * FROM tbl1 INNER JOIN tbl2 ON tbl1.user_id = tbl2.user_id ORDER BY (ここの部分が知りたいです、または全く違う文になるのでしょうか?) desc
- ベストアンサー
- MySQL
- SQLのcount()とgroup by
以下のようなテーブルがあったとき、 tbl1 id | score 1 | 100 1 | 200 1 | 300 2 | 200 2 | 100 3 | 300 3 | 400 3 | 500 3 | 600 idでまとめて個数を出すとすると、 SELECT count(*) FROM tbl1 group by id とすれば count(*) 3 2 4 と結果が返ってきますが、この結果にidを足して id | count(*) 1 | 3 2 | 2 3 | 4 というようなSQLはどうやって書けばいいのでしょうか? MySQLでは、 SELECT id, count(*) FROM tbl1 group by id と書けるのですが、これは標準的なSQLではNGなそうなので、気になって質問しました。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- SQL文にて・・・
質問があります。PostgreSQLです。 テーブル(test_tbl)があるとします。 テーブル構成は --------------------------- id ===== char(16) [英数文字格納] point ==== int2 add_date ==== timestamp --------------------------- このテーブルから idが2文字目から'di6ek68dh5ls7g'のレコードを取得したいと考えています。 レコード数がかなりおおいので パフォーマンスを重視したいのですが、 検索SQLがわかりません。 select * from test_tbl where id like '%di6ek68dh5ls7g'だとでると おもうのですが、 これ以上にパフォーマンスがあがる SQLがわかる方お願いいたします。
- ベストアンサー
- その他(データベース)
- mysqlのsql文について教えて下さい
mysqlのsql文について教えて下さい 下記のようなテーブルとデータがあった場合に どうやれば 2,次郎だけを抽出できますか? 本日日付(2010-08-06)が 既にテーブルBにdateが存在する場合は 3,1,2010-08-04 3,1,2010-08-06を 対象外にしたいです。 Aテーブル id,user 1,太郎 2,次郎 3,3郎 Bテーブル targetid,homonid,date(datetime型) 3,1,2010-08-04 3,1,2010-08-06 3,2,2010-08-05 下記だと2010-08-04にヒットしてしまい(当たり前?)動作しません。 select distinct a.* from tblA a, tblB b where date_format(b.date, "%Y-%m-%d") <> "2010-08-06" ;
- 締切済み
- MySQL
- ACCESSのSQLの書き方
ACCESSでのSQL文の書き方を教えてください。 テーブルtbl_Aとテーブルtbl_Bがあり, tbl_Aで得られた数値とtbl_Bで得られた数値を加えたものを結果として表示します。 どう書けばよろしいのでしょうか。どうしてもエラーになってしまいます。 イメージとしてはこんな感じです。 select (select ~~ from tbl_A where ~~)+(select ~~ from tbl_B where ~~) (もしoracleならば,「from dual」というのを最後に付けるんですが。)
- ベストアンサー
- その他(データベース)
- phpMyadmin利用してCSV抽出のSQL文
さくらのレンタルサーバを利用しています そのサーバにあるphpMyadminの利用での質問です phpMyadminの検索機能を利用して特定のレコードをcsvデータとして抽出したいと思います 例えば、テーブルaのid=1000の場合の画面表示は次のSQL文で表示されます ------------------- SELECT * FROM `tbl_a` WHERE `id` =1000 ------------------- パソコン側の保存先が C:\Documents and Settings\users\My Documents\SAKURA_DL" とした場合のSQL文はどのように記載すればいいか教えていただけませんか ちなみに 次のように記載してみたのですがエクスポートされません --------------------------------------------- SELECT * FROM `tbl_a` WHERE `id` =1000 INTO OUTFILE "C:\Documents and Settings\users\My Documents\SAKURA_DL" ---------------------------------------------- よろしくお願いします。
- 締切済み
- MySQL
- PHPでSQLの中にSQLという記述はできますか?
PHPでログイン画面で入力されたIDからユーザーNOを割り出し、商品テーブルにあるユーザーNOが一致する商品だけを絞り出すSQLを組みたいです。 ユーザーテーブル ユーザーNO、ユーザーID、パスワード 商品テーブル 商品名、ユーザーNO、数量 商品テーブルのsqlのwhereの中に、もうひとつsplをいれるようなことできますか? 例えばユーザーIDがyamadaの検索結果でたユーザーnoで商品テーブルのユーザーnoが一致するものを表示です よろしくお願いします
- ベストアンサー
- MySQL
- SQLについて
SQLについてです。 「購入情報」というテーブルには販売番号、商品番号、売れた個数が記述されており、 (販売番号,商品番号,売れた個数)=(a101,1000,2),(a101,1001,2),(a102,1003,2), (a102,1000,4),(a102,1002,2),(a103,1003,1) 「購入者情報」というテーブルには販売番号、ユーザーID、買ったお店が記述されており、 (販売番号,ユーザーID,価格) = (a101,u1,tokyo),(a102,u2,yokohama),(a103,u3,chiba) 「会員情報」というテーブルにはユーザーID、名前が記述されており、 (ユーザーID,名前) = (u1,yamada),(u2,takahashi),(u3,yamamoto) ここから、同時に商品を3種類以上購入したユーザーの名前を求めるために下記のSQL文を考えました。 (SELECT 販売番号, COUNT(*) FROM 購入情報 GROUP BY 販売番号SalesCode Having COUNT(*) >= 3) UNION (SELECT 会員情報.名前 FROM 会員情報, 購入者情報, 購入情報 WHERE 購入情報.販売番号 = 購入者情報.販売番号 AND 購入者情報.ユーザーID = 会員情報.ユーザーID); うまくできません。 どう直したらうまくいくでしょうか。 初心者なので、わかりやすく教えていただきたいです。 よろしくお願いいたします。
- ベストアンサー
- 情報工学
- 得られたカラムを利用して複数行を1文で取得したい
MySQLバージョン4.1.16を使用しています。 テーブル「tbl1」のnoが2が保有しているuser_id(この場合はaaaa) の行を1つのSQL文で取得したいのですが、どのようなSQL文なるでしょうか? 例えばこの場合は1,2,4行目が取得できるようにしたいです。 また、PHPなどを利用して記述する場合に、 一旦、 select * from tbl1 where no = '2'; で得られたuser_id(aaaa)を変数に保存しておき、 それを利用してもう一度 select * from tbl1 where user_id = '{上のSQL文で得られた変数(中身はaaaa)}'; と二度記述してもできるのでしょうが、 初めの1つのSQL文で取得する場合と、2つのSQL文わけて取得する場合とでは 件数が多くなっていった時にどちらが早い遅いというのはあるのでしょうか? テーブル「tbl1」 +----------+---------+ | user_id | no | +----------+---------+ | aaaa | 1 | +----------+---------+ | aaaa | 2 | +----------+---------+ | bbbb | 3 | +----------+---------+ | aaaa | 4 | +----------+---------+
- ベストアンサー
- MySQL
お礼
ご回答ありがとうございました。希望通りの結果になりました。諦めかけていただけにすごく嬉しいです。本当にありがとうございました。