X



MySQL SQL質問応答スレ [無断転載禁止]©2ch.net
0001NAME IS NULL
垢版 |
2016/11/10(木) 20:18:35.29ID:yXYwasBw
RDBMSごとにスレが分かれていないので答えようがない質問ばかりなので独立させました。


SQL質疑応答スレ 17問目 [無断転載禁止]©2ch.net

http://echo.2ch.net/test/read.cgi/db/1468157341/
0003NAME IS NULL
垢版 |
2017/12/29(金) 12:18:44.27ID:dtNZwIie
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

XS7TY79BP2
0004NAME IS NULL
垢版 |
2018/03/06(火) 13:07:37.88ID:???
データベースが壊れて、mysqldが起動できません。mysqldが動いていなくてもmysqldumpは動くのでしょうか?
0005NAME IS NULL
垢版 |
2018/03/27(火) 16:01:56.33ID:0JSnU4GB
/var/log/mysql.logを見ていたら、
2月中の一週間分綺麗にログが消えていました。
その期間サイトが使えなかったことはありませんでした。
これって何が考えられますか?
0006NAME IS NULL
垢版 |
2018/06/11(月) 10:04:58.72ID:v7qG2Zli
opened_tablesとtable_open_cacheについて教えてください。

この調整をしているのですが、
opened_tables < table_open_cache
二週間ほど様子見てきて、
opened_tablesの数値が一定化してきました。
それに合わせてtable_open_cacheを小さくすると、
それに伴ってopened_tablesが大きくなったりしてしまうんでしょうか?
0007NAME IS NULL
垢版 |
2018/07/02(月) 18:20:58.52ID:???
nullを許可したnullのカラムに、nullで更新をかけると、更新タイムスタンプが変更されてしまいますが、仕様ですか?
同カラムの値が1で、そのまま1で更新をかけた場合はタイムスタンプは更新されませんでした。
0008NAME IS NULL
垢版 |
2018/09/07(金) 00:09:57.32ID:PE4YXmI7
仕様です
0009NAME IS NULL
垢版 |
2018/10/18(木) 20:09:48.44ID:0pQCmqOL
初歩的な質問ですが、
ダンプでMySQLデータをエクスポートするのと、
phpMyAdminでテーブルを選択してエクスポート。
どんな違いがありますか?
0010NAME IS NULL
垢版 |
2018/10/25(木) 22:26:32.99ID:p8qrb39c
wordpressをサーバー移転するため、新サーバー(Xサーバー)にて新規データベースを作成、
ユーザーを割り当て、phpmyadminを開いたのですが、「インポート」のタブを押しても何も変わりません。
それどころか、どのタブを押しても、表示が変わりません。「一般設定」と「外観設定」についてが表示されたままです。
もうどうしたらいいかわかりません…。
0011NAME IS NULL
垢版 |
2020/06/19(金) 21:06:47.91ID:ICE+vcs9
レプリケーションって1度構築したら
マスターやスレーブの再起動があったり
ip振り直しがあったあと再度有効になりますか?
例えば仮想マシンイメージにビルドしておいて
mysqldサービス自動起動に設定しておいて
ネットワークだけ繋げて
それぞれの仮想マシン起動したらまたレプリケーション
されるようになる?
その都度内部にログインして作業が必要?
0012NAME IS NULL
垢版 |
2020/11/04(水) 07:53:43.16ID:mFVPG2ez
create文を調べていたところ下記2通りの記述を見つけました。

create table xxxx default charset = utf8
create table xxxx default character set = utf8

ともにテーブルの作成はできたのですが、作成後のテーブルの違いはありますでしょうか?
もしある場合何が違うのか教えてください。
0014NAME IS NULL
垢版 |
2020/11/10(火) 05:33:52.05ID:???
>>11
auto.conf を消さないと uuid の衝突でレプリが止まるから駄目
あまりそういうふうな運用はしないほうがいいかも
0015NAME IS NULL
垢版 |
2020/11/10(火) 05:34:55.65ID:???
>>9
mysqldump にもオプションが色々あるから一概に一緒とは言えない
0016NAME IS NULL
垢版 |
2020/12/14(月) 16:37:00.43ID:EkLpSXlr
データベースに設定するユーザ名って
WindowsやLinuxのユーザ名のこと?
それともデータベース独自のユーザー?
001716
垢版 |
2020/12/14(月) 17:00:29.67ID:???
>>16 自己解決。それぞれのユーザー名は無関係でした。
0018NAME IS NULL
垢版 |
2020/12/25(金) 20:09:51.17ID:???
Linuxユーザーです。
localhostでデータベースの学習用にMySQLを使います。
https://dev.mysql.com/doc/refman/5.6/ja/changing-mysql-user.html
によると、その場合、
通常のユーザーアカウントでmysqldサーバーを実行したほうが
セキュリティ上よいと書かれてあります。
皆さんはそうなさっていますか?
逆にセキュリティ上の脅威になりそうな気もするんですが。
0019NAME IS NULL
垢版 |
2021/01/13(水) 21:59:33.64ID:???
お願いします。

実行すると、なかなかプロンプトが戻ってこないSQLがあります。
こういうSQLを実行してる時って、

@サーバ自体にものすごい負荷(ディスクIOやCPU資源)がかかってたりするのでしょうか。
Aそれとも単にSQLが遅い(=SQLを利用するアプリケーションの動作が遅くなる)だけなのでしょうか。

よろしくお願いいたします。
0020NAME IS NULL
垢版 |
2021/03/24(水) 20:27:06.58ID:???
最近の質疑応答スレって特定の処理系に依存するものが多いね
次スレ立てず、処理系毎に分けてしまう方が良いかも
0021NAME IS NULL
垢版 |
2021/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 NULL
垢版 |
2021/08/27(金) 15:13:41.21ID:???
>21
残念ですが、それでは何の解決にもなってない
もう一度SQLインジェクションについて勉強汁

なおSQL構文を変数に入れて使うこと自体は何の問題もない
0023NAME IS NULL
垢版 |
2021/08/28(土) 01:03:14.57ID:PkRMMA3g
ネタなんだろうけど、バインド変数にもしてないな。
0024NAME IS NULL
垢版 |
2021/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 NULL
垢版 |
2021/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 NULL
垢版 |
2021/12/16(木) 16:47:56.62ID:y5mx3BAp
>>25
履歴番号の結合条件は不要だろ
0027NAME IS NULL
垢版 |
2021/12/16(木) 16:50:02.45ID:y5mx3BAp
間違った
0028NAME IS NULL
垢版 |
2022/02/11(金) 08:39:15.81ID:zwC8g7xH
集約関数が使えるのはSELECT句とHAVING句だけだと思っていたのですが、
ORDER BY COUNT(*);
と書いてもエラーになりません。
集約関数が書ける句を全て上げると、どの句がありますか?
0029NAME IS NULL
垢版 |
2022/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 NULL
垢版 |
2022/02/26(土) 12:53:38.36ID:???
>>29
GROUP BYとグループ関数の使い方を正しく学習してくるんだ
グループ関数はGROUP BYが必須(全行が集計対象になる場合のみ省略可)
0031NAME IS NULL
垢版 |
2022/02/27(日) 10:17:39.49ID:wR3P0H0y
>>30
なるほど、それで@の内側のAVG()関数はSELECT句に書いてもエラーにならないんですね。
解りやすいです。ありがとうござました!
0032NAME IS NULL
垢版 |
2022/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 NULL
垢版 |
2022/03/03(木) 13:32:27.33ID:???
自分でwith rollupを指定して何を言ってるんだ?
0034NAME IS NULL
垢版 |
2022/03/03(木) 17:14:27.20ID:???
>>32
突っ込まないから、どういう結果にしたいかを書いてみて
003532
垢版 |
2022/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 NULL
垢版 |
2022/03/11(金) 07:04:08.37ID:GAAG5umt
結局、ネタか
0037NAME IS NULL
垢版 |
2022/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 NULL
垢版 |
2022/03/16(水) 21:38:46.46ID:???
憶測なんですがねぇ…
省略した場合はS2のshohin_bunruiが参照されるはず
でもS1.shohin_bunrui = S2.shohin_bunruiが有るので
S1でもS2でも結果は同じだから許されるのかもしれない
0039NAME IS NULL
垢版 |
2022/03/16(水) 21:45:37.79ID:???
あ、MYSQLだからS1への参照許されるはず
他RDBMSだと多分エラーになる。S2ならば参照可能
0040NAME IS NULL
垢版 |
2022/03/16(水) 21:55:38.94ID:???
ていうかその本はまれに見るクソだな…
AVG(hanbai_tanka)はあくまでshohin_bunruiに関連するデータなので
shohin_idやshohin_meiの列とは最早何の関連も無い情報なのよ
それを無理やり結合して取得するやり方は意味不明バグの原因にしかならんよ
0041NAME IS NULL
垢版 |
2022/03/17(木) 18:12:46.57ID:???
>>40
ちょっと何言ってるかわかりません
GROPU BYがおかしいのを除けば、普通の相関サブクエリだと思うが
まあいまどきはあんまり使わんがな

つかあいかわらずMySQLはでたらめなSQL通すなぁ
初心者の勉強にはむいてないと思うわ
0042NAME IS NULL
垢版 |
2022/03/17(木) 18:18:51.92ID:???
綴りくらい直してよ
見てて赤面する
0043NAME IS NULL
垢版 |
2022/03/17(木) 18:37:51.96ID:???
>>37
まず翔泳社のサイト行って正誤表確認してこい
https://www.shoeisha.co.jp/book/detail/9784798118819
5.4の解答、ビューの作成文のGROUP句とかスゲー気になるわw

つかこれだけ修正でてるのに電子書籍版が一切修正されてないのかよ
電子書籍版買っちゃだめだな、これ
0044NAME IS NULL
垢版 |
2022/03/17(木) 18:40:04.43ID:???
>>42
元質問にそう書いてあるからそう書いてるんだが、と言っておこう

まあ、気づいてなくてコピペしたからなんだがw
脳内補正おそるべし
0045NAME IS NULL
垢版 |
2022/03/17(木) 18:47:01.90ID:???
だとは思ってますけどw
0046NAME IS NULL
垢版 |
2022/03/20(日) 16:10:47.33ID:???
MySQLにPHPmyadminからodsファイルを読み込ませたら、PHPで出力する時に
「水○○」って入力してある文字が、水の部分だけ消えてしまうんですが
水って駄目文字とかなんかあるんでしょうか?
0047NAME IS NULL
垢版 |
2022/04/12(火) 21:50:45.95ID:???
ここで良いのか分かりませんが質問です
検索文字列が複数列のどれかに一致するデータを取得したいのですが
WHEREの中は
aname1 = '探し物' OR aname2 = '探し物' OR aname3 = '探し物' OR …とやるしかないのでしょうか
80個くらいあるのでもっと簡単にできる方法がありましたら教えてください
0048NAME IS NULL
垢版 |
2022/04/13(水) 12:07:38.01ID:???
テーブル設計を間違えていると思う
0049NAME IS NULL
垢版 |
2022/04/13(水) 13:06:31.41ID:???
例えばそれ以外のカラムにはなく、aname1 には '探し物' があるような
データに特別な意味を持つテーブルなのかどうか
0050NAME IS NULL
垢版 |
2022/04/13(水) 13:48:14.31ID:???
>>48
ちょっと考えてみます
>>49
テーブルの方の例ですが
aname1:りんご
aname2:リンゴ
aname3:林檎
と入れてありまして、どの文字列でもこのレコードの情報(価格や産地など)を得たい
ということなのです
0051NAME IS NULL
垢版 |
2022/04/13(水) 17:13:51.27ID:???
そういう仕様はDBに押しつけるものではないと思う
0052NAME IS NULL
垢版 |
2022/04/13(水) 17:19:13.80ID:???
適当な区切文字を選んで、(例えば$$として)
aname に 'リンゴ$$りんご$$林檎' をセットする
検索時にaname like '%keyword%'ってやる
0053NAME IS NULL
垢版 |
2022/04/13(水) 20:13:30.77ID:???
>>51
うーむそういうものですか…DB扱うの初めてなもので…
>>52
なーるほど
と思いましたが他の例えば「りんご飴」レコードも検索されてしまいますので
でも文字数チェックすればいけるかも
でもそもそもそういう風に使用すべきで無いとの意見もありましたし
もう少し考えてみたいと思いますありがとうございました
0054NAME IS NULL
垢版 |
2022/04/13(水) 20:16:47.62ID:???
'りんご飴'にヒットさせたくないなら

aname like '%$$keyword$$%'
0055NAME IS NULL
垢版 |
2022/04/13(水) 22:32:17.87ID:???
>>54
う、それいけるかも
元々csvからインポートしてるだけだけど工夫したら自動で変換もできるかも
色々ご相談にのって頂いてご意見いただきましてありがとうです
0056NAME IS NULL
垢版 |
2022/04/13(水) 22:43:10.28ID:???
言い忘れた
データの先頭に$$を入れてね
0058NAME IS NULL
垢版 |
2022/04/16(土) 19:05:57.68ID:lQwNRS+V
自作自演なのか、暇人ですな。
0059NAME IS NULL
垢版 |
2022/04/18(月) 09:53:18.32ID:kyGyX9T4
>>50
それで1つのレコードを指し示す名前が80個にもなるの?
リンゴの例だと想像つかないけど
0060NAME IS NULL
垢版 |
2022/04/18(月) 13:11:45.68ID:???
>>56
了解です
結局 or 羅列方式で進行中ですが…
>>57
アドバイスありがとうございます今後検討してみたいと思います
>>59
りんごの例ですとせいぜい数個なのですが
食品名って地方によって呼び名が変わったり
別名があったり
それぞれひらがなカタカナ漢字の組み合わせがあったりで
余裕を持って80にしてみたのです
登録中ですけど今のところ最大で20個くらいですが…
0061NAME IS NULL
垢版 |
2022/04/18(月) 14:20:54.57ID:???
>>60
なるほど、じゃ正式名称として使うものは元のテーブルにも残しつつ
>>57が書いてるような別名用のテーブルを用意するのがよさそう
0062NAME IS NULL
垢版 |
2022/04/18(月) 21:57:33.34ID:???
>>61
別に専用テーブルを設けるのが一番美しいと言うか普通なのかな
ひとつで管理の方が簡単かなとも思ったんですけどRDBってくらいだし面白そうだし
ちょっと本気で検討してみます
つか別の案件が急に入ってしまって(何とdelphi案件!)少し寝かしておいてまた質問等ありましたらよろしくお願いします。
delphiはくだすれがあったような遠い記憶…
0063NAME IS NULL
垢版 |
2022/04/18(月) 22:15:55.48ID:???
要素数が可変なら列じゃなく行にするのが定石
0064NAME IS NULL
垢版 |
2022/04/20(水) 10:49:26.81ID:dKdNo1WH
「名前」「メールアドレス」など、多数の文字列が入らないカラムの場合、
データ型はtextで良いですかね?それともvarcharで指定するべきですか?
0065NAME IS NULL
垢版 |
2022/04/20(水) 11:59:15.87ID:???
そのフィールドを頻繁に検索するならvarcharの方がいいんじゃね?
稀に使う程度ならどっちでもいいけど
0066NAME IS NULL
垢版 |
2022/04/20(水) 12:19:12.52ID:???
RFCの規定だと、全体の最大長は256文字だそうだ
0067NAME IS NULL
垢版 |
2022/04/20(水) 12:44:38.15ID:???
>>65
like検索はしますが、=検索はしないという想定です。
指定したほうが検索が早いのはわかるのですが、
それ以外にメリットありますかね?
(文字数制限はアプリ側でするとして
0068NAME IS NULL
垢版 |
2022/04/20(水) 12:53:29.57ID:sfLQoamO
石橋薫というおっさんと仕事を一緒にしたら死ぬぞ
0069NAME IS NULL
垢版 |
2022/04/20(水) 21:49:00.60ID:???
>>67
5.7系の場合はtemp tableが必要になった場合の速度が違う

8.0系の場合はTempTableエンジン使っていれば性能的な差は気にしなくてもいいけど
Postgresと違ってMySQLのtext型は掲示板のレスのような長い可変文字列を格納する型として定着してるので
メールアドレスや名前みたいなのに使うと他の人が見ると混乱する

DBのデータ型でも簡単に文字数制限できるのに
それをアプリだけでやるというのは良くない設計
0070NAME IS NULL
垢版 |
2022/04/21(木) 01:20:30.36ID:PsjOjBp3
実際に格納されている文字列長分の領域しか使っていない、事前に領域を確保していない、使わなくなった領域は穴埋めで再利用されると思うのは、データベースエンジニアでもいるくらいだからなあ。

データの物理位置を常に移動させていたら、とてもじゃないが、使い物にならない速度になってしまう。

なんとなく大きなデータ型を使うのは、アンチパターンどころか、絶対にやってはいけないレベル。
0071NAME IS NULL
垢版 |
2022/05/01(日) 17:56:21.32ID:???
スキーマ名にutf8な日本語が含まれている場合に、mysqldumpでうまくスキーマごとにダンプすることってできますか?エロい人。
Windows版の5.7です。
0072NAME IS NULL
垢版 |
2022/06/04(土) 19:11:51.19ID:???
ローカル環境の8でTEXT型20万行に対しnot in検索かけたらこの世の終わりみたいな音出してたよ
0073NAME IS NULL
垢版 |
2022/06/05(日) 12:37:13.61ID:???
マルチバイトを使わない文字列が1カラムあるテーブルがあって
password
Password
PASSWORD
あって、区別するにはBINARYを使うというまではわかったんだけど、

このカラムにプライマリキーやuniqueを設定しようとすると重複してダメと言われるけど、大文字小文字が混在する場合は無理?
1カラムしか無い場合はプライマリーキーとかは設定しなくていいの?
0075NAME IS NULL
垢版 |
2022/06/05(日) 19:11:06.01ID:???
プライマリキーを設定するかどうかはcollationとは別の問題
0076NAME IS NULL
垢版 |
2022/06/07(火) 07:52:43.15ID:uPHVsKsW
レコード追加する際に、連番のカラムを最大値+1にしたいです。

諸事情で、
・その連番のカラムはAUTO_INCREMENTではない
・プライマリキーでもなければUNIQUEですらない
・テーブル定義は変更してはいけない
という状況で、
重複させないのが要件です。

INSERT INTO unko (renban) SELECT MAX(renban)+1 FROM unko;
として1つのSQLで実行すれば、重複のリスクは回避できるでしょうか?

それとも、トランザクションでテーブル排他ロックからしなきゃだめでしょうか?
0077NAME IS NULL
垢版 |
2022/06/07(火) 14:36:29.71ID:BXjU4H6U
SQLについて質問なのですが

select USERID,USERNAME from USER_GRADE
where
STATUS in (select STATUS from USER_GRADE where GRADE ='Platinum' group by STATUS)
and
GRADE <> 'Platinum'

これをSQL初心者にもわかる簡単な書式に直して同じ結果を出したいのですがわかる方いますでしょうか
0078NAME IS NULL
垢版 |
2022/06/07(火) 18:02:35.82ID:???
>>76
トランザクションによる排他制御は必須
それが暗黙的に実行されるか明示的に指定するかの違いがあるだけ
そのケースは分離レベルをserializableにする必要がある

同じSQLステートメントでしか競合しないなら
片方のトランザクションをコミット直前でsleepさせておいて
もう片方のトランザクションをsleepさせずに実行した結果を確認してみるといい
0079NAME IS NULL
垢版 |
2022/06/08(水) 16:08:59.29ID:???
すみません、ちょっと筋違いな質問かもしれませんが、
あるソフトウェアはSQLを利用するのですが、それをインストールしようとすると、他のソフトウェアで使われているSQLと競合してインストールできません。
他のソフトウェアはたくさんあるのですが、どれがSQLを使用しているものか調べる方法はありますでしょうか?
0080NAME IS NULL
垢版 |
2022/06/08(水) 17:42:53.28ID:???
節子、それMySQLやない、MsSQLや!
0081NAME IS NULL
垢版 |
2022/06/11(土) 14:35:16.17ID:???
mysqltunerで
skip-name-resolve=1
これの推奨が出てくるのは、いつもlocalhostと127.0.0.1の変換がパフォーマンスの低下になるからってこと?
ユーザ作る時localhostと手打ちで入力しているけど、
ローカルだけならホストの権限は127.0.0.1に揃えた方が良いと言うこと?
0082NAME IS NULL
垢版 |
2022/06/23(木) 10:52:23.93ID:JA6tz0/l
MYSQL8になって何が変わったんですか?
0084NAME IS NULL
垢版 |
2022/08/01(月) 16:09:44.78ID:zIyNNUAa
MYSQLで

CREATE OR REPLACE TABLEみたいなことってできませんか?

テーブルの作成、もしくはテーブル構成の更新したいのです
0086NAME IS NULL
垢版 |
2022/09/25(日) 16:06:07.69ID:???
検索方法で質問です
例えば「カツカレー」で検索すると
「カレー」のレコードを
「三色エビチリ」で検索すると
「エビチリ」のレコードを得たいのですがいい方法はありますでしょうか

テーブルの方は
カレー 情報…
エビチリ 情報…
オムライス 情報…
となってます
0087NAME IS NULL
垢版 |
2022/09/25(日) 20:24:40.72ID:DVn290av
>>86
それマスタテーブルの存在がわかってないだけだろ
0088NAME IS NULL
垢版 |
2022/09/25(日) 20:25:45.03ID:DVn290av
>>86
集合演算子を知ってますか?
0089NAME IS NULL
垢版 |
2022/09/26(月) 01:13:01.97ID:???
>>86
形態素解析の話?
それとも「カツカレー」という単語を「カレー」にマッピングするテーブルを作る話?
0090NAME IS NULL
垢版 |
2022/09/26(月) 08:08:08.79ID:???
>>88
集合演算子で検索したけど
分からなかった
>>89
あ、いえ例えばカレーで検索してカツカレーを求めることはできますけど
正規表現とか使って逆はできないかな
という質問です
マッピングテーブルみたいなの作るしかないのかな
0091NAME IS NULL
垢版 |
2022/09/26(月) 16:12:41.06ID:CFgRtkvv
>>90
カツカレーの情報が、エビチリ情報テーブルに存在しないデータの持ち方ならSELECT文をUNION ALLで並べればいいだけだろ。

セレクト 列名 カレー情報 where 列名 イコール カツカレー
 ユニオンALL
セレクト 列名 エビチリ情報 where 列名
イコール カツカレー

俺は答えを教えるのは本人にとってよくないと思っているから、本当は書きたない。

そもそもそのデータモデリングは自分で考えたのか?
0092NAME IS NULL
垢版 |
2022/09/26(月) 16:15:19.98ID:CFgRtkvv
UNIONなどの集合演算子は列名が揃ってないと使えないからな
0093NAME IS NULL
垢版 |
2022/09/26(月) 17:20:55.87ID:???
>>91
おまえどう考えても勘違いしてるぞ
上塗り重ねず自重しとけ
0094NAME IS NULL
垢版 |
2022/09/26(月) 17:31:17.14ID:???
カツカレーだとライスにはマッチしないんだな
0095NAME IS NULL
垢版 |
2022/09/26(月) 17:42:01.11ID:???
>>90
選択肢はブルートフォース、n-gram、 形態素解析、マッピングテーブルくらいかな
どれを選ぶかは用途次第

ブルートフォースは「カツカレー」というキーワードとテーブルの列名を1件1件比較して
キーワード内の部分文字列が列名に合致するかどうかを判断していく
めちゃ遅くなるけどデータ量と要求速度によってはこれでいい場合もある

n-gramで例えば文字単位で3文字ずつのまとまり(trigram)に分解すれば
「カツカレー」は「カツカ」「ツカレ」「カレー」の3つになる
この3つのキーワードともとの単語でテーブルを検索して合致するものがあるかどうか見る

形態素解析はそれ用のライブラリ使って
「カツカレー」を「カツ」と「カレー」という単語単位に分解して検索する

マッピングテーブルは
「カツカレー」というキーをマスタテーブルの「カレー」にマッピング
「カツ」にマッピングしたりする可能性もあるから1対多
0096NAME IS NULL
垢版 |
2022/09/26(月) 18:45:39.41ID:CFgRtkvv
動的に列名違いのSQLを組み立てるなんてありえない。
0097NAME IS NULL
垢版 |
2022/09/26(月) 19:18:35.82ID:???
>>95 >>96
SQLで出来ないことが分かっただけでも収穫ですが
さらに解決のヒントをいただきありがとうございます

ブルートフォースって言うのですか
PHPで作ってますがロジックで判断するやり方はちらっと頭に浮かんだのですが
性能がめちゃ心配で脳内却下してました
n-gramはちょっと分かりませんでした
形態素は解析エンジンを信用しきれなくて…
というわけで力作業でマッピングテーブルを作るか
それかブルートフォースでやるか
検討したいと思います
0098NAME IS NULL
垢版 |
2022/09/26(月) 19:38:59.67ID:CFgRtkvv
やはり自作自演か
0099NAME IS NULL
垢版 |
2022/09/26(月) 22:34:58.61ID:???
>>97
SQLでというか>>95の選択肢はどれもストアドやUDF使えばDB側でできるよ
特にブルートフォースでやるならDB側でやったほうが性能的には断然いい
0100NAME IS NULL
垢版 |
2022/09/26(月) 22:48:14.01ID:???
設計の最初からやり直した方が速そう
レスを投稿する


ニューススポーツなんでも実況