よろしくお願いいたします。 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がおかしいのを除けば、普通の相関サブクエリだと思うが まあいまどきはあんまり使わんがな