よろしくお願いいたします。 0020NAME IS NULL2021/03/24(水) 20:27:06.58ID:??? 最近の質疑応答スレって特定の処理系に依存するものが多いね 次スレ立てず、処理系毎に分けてしまう方が良いかも 0021NAME IS NULL2021/08/03(火) 21:48:15.38ID:XJY/pG+9 phpの中でsql文を変数に格納したいのですが。 一応、次の構文で通ります。これはsqlインジェクション的に問題ありますでしょうか?
$query = "SELECT * FROM emp_table WHERE job = '".$job."' ORDER BY emp_id"; 0022NAME IS NULL2021/08/27(金) 15:13:41.21ID:??? >21 残念ですが、それでは何の解決にもなってない もう一度SQLインジェクションについて勉強汁
なおSQL構文を変数に入れて使うこと自体は何の問題もない 0023NAME IS NULL2021/08/28(土) 01:03:14.57ID:PkRMMA3g ネタなんだろうけど、バインド変数にもしてないな。 0024NAME IS NULL2021/09/25(土) 15:59:58.40ID:fttDx0O8 テーブル T
コード 履歴番号 本文 A 1 aaa A 2 bbb A 3 ccc B 1 ddd B 2 eee C 1 fff C 2 ggg
抽出後
コード 履歴番号 本文 A 3 ccc B 2 eee C 2 ggg
コードでgroup byして履歴番号が最大のものだけを 抽出したいですが 本文は失いたくありません なにか上手い方法はありますか? 0025NAME IS NULL2021/09/25(土) 17:31:01.38ID:??? ちょっと雑で済まん select コード,履歴番号,本文 from T, (select コード as c, max(履歴番号) as r from T group by コード) w where コード=c and 履歴番号=r; 0026NAME IS NULL2021/12/16(木) 16:47:56.62ID:y5mx3BAp>>25 履歴番号の結合条件は不要だろ 0027NAME IS NULL2021/12/16(木) 16:50:02.45ID:y5mx3BAp 間違った 0028NAME IS NULL2022/02/11(金) 08:39:15.81ID:zwC8g7xH 集約関数が使えるのはSELECT句とHAVING句だけだと思っていたのですが、 ORDER BY COUNT(*); と書いてもエラーになりません。 集約関数が書ける句を全て上げると、どの句がありますか? 0029NAME IS NULL2022/02/26(土) 09:08:11.60ID:BPPSMltD 下記の@が、Aの様に書けないのはどうしてでしょうか? ご存じの方、いらっしゃいましたら教えて頂けると嬉しいです。 宜しくお願い致します。
@ SELECT shohin_id, shohin_mei, shohin_bunrui, hanbai_tanka, (SELECT AVG(hanbai_tanka) FROM Shohin) AS hanbai_tanka_all FROM Shohin;
A SELECT shohin_id, shohin_mei, shohin_bunrui, hanbai_tanka, AVG(hanbai_tanka) FROM Shohin FROM Shohin; 0030NAME IS NULL2022/02/26(土) 12:53:38.36ID:???>>29 GROUP BYとグループ関数の使い方を正しく学習してくるんだ グループ関数はGROUP BYが必須(全行が集計対象になる場合のみ省略可) 0031NAME IS NULL2022/02/27(日) 10:17:39.49ID:wR3P0H0y>>30 なるほど、それで@の内側のAVG()関数はSELECT句に書いてもエラーにならないんですね。 解りやすいです。ありがとうござました! 0032NAME IS NULL2022/03/03(木) 01:05:30.78ID:??? 伝票id 社員id 名前 数 1 a 山田 10 2 b 田中 20
select 社員id,名前,sum(数) from table group by 社員id with rollup
結果 a 山田 10 b 田中 20 null 田中 30
一番下の田中を、小計を出さずにnullにする事はできますか? 0033NAME IS NULL2022/03/03(木) 13:32:27.33ID:??? 自分でwith rollupを指定して何を言ってるんだ? 0034NAME IS NULL2022/03/03(木) 17:14:27.20ID:???>>32 突っ込まないから、どういう結果にしたいかを書いてみて 0035322022/03/09(水) 14:33:49.93ID:??? 解決しました。
select *
from ( select 列1,列2,sum(合計列) from テーブル名 group by 列1,列2 with rollup ) as テーブル
where (列1 is not null and 列2 is not null) or (列1 is null and 列2 is null)
サブクエリを使わずhavingを使った例もあったけど自分の環境では合計行が出なかった。 0036NAME IS NULL2022/03/11(金) 07:04:08.37ID:GAAG5umt 結局、ネタか 0037NAME IS NULL2022/03/16(水) 16:20:42.35ID:Fdgum0qq 改定前の「ゼロからはじめるデータベース操作 SQL」という本の177ページ問5.3に載っている問題なのですが、 下記の様に商品分類ごとに平均販売単価を求めるSQL文で、 「GROPU BY S1.shohin_bunrui」のS1.がどうして必要なのか分りません。 これを付けなくても結果は同じになります。 これがどうして必要なのか分る方いらっしゃいましたら教えて頂けると助かります。
CREATE VIEW AvgTankaByBunrui AS SELECT shohin_id, shohin_mei, shohin_bunrui, hanbai_tanka, (SELECT AVG(hanbai_tanka) FROM Shohin S2 WHERE S1.shohin_bunrui = S2.shohin_bunrui GROPU BY S1.shohin_bunrui) AS avg_hanbai_tanka FROM Shohin S1; 0038NAME IS NULL2022/03/16(水) 21:38:46.46ID:??? 憶測なんですがねぇ… 省略した場合はS2のshohin_bunruiが参照されるはず でもS1.shohin_bunrui = S2.shohin_bunruiが有るので S1でもS2でも結果は同じだから許されるのかもしれない 0039NAME IS NULL2022/03/16(水) 21:45:37.79ID:??? あ、MYSQLだからS1への参照許されるはず 他RDBMSだと多分エラーになる。S2ならば参照可能 0040NAME IS NULL2022/03/16(水) 21:55:38.94ID:??? ていうかその本はまれに見るクソだな… AVG(hanbai_tanka)はあくまでshohin_bunruiに関連するデータなので shohin_idやshohin_meiの列とは最早何の関連も無い情報なのよ それを無理やり結合して取得するやり方は意味不明バグの原因にしかならんよ 0041NAME IS NULL2022/03/17(木) 18:12:46.57ID:???>>40 ちょっと何言ってるかわかりません GROPU BYがおかしいのを除けば、普通の相関サブクエリだと思うが まあいまどきはあんまり使わんがな
つかこれだけ修正でてるのに電子書籍版が一切修正されてないのかよ 電子書籍版買っちゃだめだな、これ 0044NAME IS NULL2022/03/17(木) 18:40:04.43ID:???>>42 元質問にそう書いてあるからそう書いてるんだが、と言っておこう
まあ、気づいてなくてコピペしたからなんだがw 脳内補正おそるべし 0045NAME IS NULL2022/03/17(木) 18:47:01.90ID:??? だとは思ってますけどw 0046NAME IS NULL2022/03/20(日) 16:10:47.33ID:??? MySQLにPHPmyadminからodsファイルを読み込ませたら、PHPで出力する時に 「水○○」って入力してある文字が、水の部分だけ消えてしまうんですが 水って駄目文字とかなんかあるんでしょうか? 0047NAME IS NULL2022/04/12(火) 21:50:45.95ID:??? ここで良いのか分かりませんが質問です 検索文字列が複数列のどれかに一致するデータを取得したいのですが WHEREの中は aname1 = '探し物' OR aname2 = '探し物' OR aname3 = '探し物' OR …とやるしかないのでしょうか 80個くらいあるのでもっと簡単にできる方法がありましたら教えてください 0048NAME IS NULL2022/04/13(水) 12:07:38.01ID:??? テーブル設計を間違えていると思う 0049NAME IS NULL2022/04/13(水) 13:06:31.41ID:??? 例えばそれ以外のカラムにはなく、aname1 には '探し物' があるような データに特別な意味を持つテーブルなのかどうか 0050NAME IS NULL2022/04/13(水) 13:48:14.31ID:???>>48 ちょっと考えてみます >>49 テーブルの方の例ですが aname1:りんご aname2:リンゴ aname3:林檎 と入れてありまして、どの文字列でもこのレコードの情報(価格や産地など)を得たい ということなのです 0051NAME IS NULL2022/04/13(水) 17:13:51.27ID:??? そういう仕様はDBに押しつけるものではないと思う 0052NAME IS NULL2022/04/13(水) 17:19:13.80ID:??? 適当な区切文字を選んで、(例えば$$として) aname に 'リンゴ$$りんご$$林檎' をセットする 検索時にaname like '%keyword%'ってやる 0053NAME IS NULL2022/04/13(水) 20:13:30.77ID:???>>51 うーむそういうものですか…DB扱うの初めてなもので… >>52 なーるほど と思いましたが他の例えば「りんご飴」レコードも検索されてしまいますので でも文字数チェックすればいけるかも でもそもそもそういう風に使用すべきで無いとの意見もありましたし もう少し考えてみたいと思いますありがとうございました 0054NAME IS NULL2022/04/13(水) 20:16:47.62ID:??? 'りんご飴'にヒットさせたくないなら
aname like '%$$keyword$$%' 0055NAME IS NULL2022/04/13(水) 22:32:17.87ID:???>>54 う、それいけるかも 元々csvからインポートしてるだけだけど工夫したら自動で変換もできるかも 色々ご相談にのって頂いてご意見いただきましてありがとうです