同じクエリを何度も書かないようにしたいです。
下記のコードを作成しましたが、「MY GOALS」「ENEMY GOALS」のソースと(追加分)のソース内で同じものがあるので、このクエリを省略したいです。
追加分で「MY GOALS」-「ENEMY GOALS」を出しています。
該当のソースコード
SELECT p1.kickoff, c1.name AS my_country, c2.name AS enemy_country, c1.ranking AS my_ranking, c2.ranking AS enemy_ranking, (SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) AS my_goals, ( SELECT COUNT(g2.id) FROM goals g2 LEFT JOIN pairings p2 ON p2.id = g2.pairing_id WHERE p2.my_country_id = p1.enemy_country_id AND p2.enemy_country_id = p1.my_country_id ) AS enemy_goals, -- 追加ここから (SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) - ( SELECT COUNT(g2.id) FROM goals g2 LEFT JOIN pairings p2 ON p2.id = g2.pairing_id WHERE p2.my_country_id = p1.enemy_country_id AND p2.enemy_country_id = p1.my_country_id ) AS goal_diff -- 追加ここまで FROM pairings p1 LEFT JOIN countries c1 ON c1.id = p1.my_country_id LEFT JOIN countries c2 ON c2.id = p1.enemy_country_id WHERE c1.group_name = 'C' AND c2.group_name = 'C' ORDER BY p1.kickoff, c1.ranking
試したこと
「my_goals」−「enemy_goals」とすると「Unknown columns」になってしまいました。
補足情報リンク内容
上のリンク内容の17の正解のソースのことです
my SQL A5:SQL mk-2 version8.0.19
質問を省略されても何のことだかさっぱりです。
ご意見ありがとうございます。
得失点差の算出に『my goals』『enemy goals』を求める長いクエリが記述されていて冗長です。
同じクエリを何回も書かないように訂正したいという内容でした。
想定するDBの種類、バージョンを記載してください。
でないと使える機能使えない機能ありますので。
my SQL A5:SQL mk-2
version2.14.5です。
よろしくお願いします
それはDB操作のツールであってDBそのものではないです。
MySQLならバージョン確認のクエリ発行して確認してください。
あと、タグとか環境情報とか質問本文に追加してください。
質問にテーブル定義としてCREATE TABLEを、テーブル中のデータを何件かINSERTで、現行のSELECT結果を https://teratail.com/help/question-tips#questionTips3-7 の [コード]で追記できると適切なコメントが付き易いです。
たぶん、正規化がかなり破綻しているかと?
データベースの正規化 https://oss-db.jp/measures/dojo_info_04.shtml
に沿って設計します。通常第3正規化まで行います。
揚げ足取りたいわけではないです。
情報には正確性が大事だからです。
>versionなども下記のリンク通りで大丈夫です。
リンク先は「MariaDB 5.5.48」とあります。
MySQLのversion8.0.19だと全く別物ですよ。
正しい情報を記載してください。
また、マークダウン含めて質問内容がレイアウト崩れてしまってるので
投稿前にプレビュー確認して調整してください。
こちらの方こそ知識が足りておらず申し訳ございません。
versionは8.0.19です。
質問がどんどん破綻していく。
質問を修正するのは急がないから、いままで指摘されたことをきんちんと理解して直しては?
お金を払って助っ人を呼んだほうが良いと思うけど。
申し訳ありません勉強不足で
自分なりに全て訂正いたしました。
A5:SQL mk-2はDBを操作するツールの1つです。
MySQLはDBそのものです。
一緒にはできません。
[MySQL]と[my SQL]が違うことを認識できないようでは、プログラマーより[募る]と[募集]は違うと言い張るどこぞの愚かな国の総理に向いているかも?
https://teratail.com/questions/246744
m.ts10806 さんの手厚いフォローに今気が付きました。
申し訳ございません、時間を持て余してるのか分かりませんが、余計な一言やただ意味のないコメントをするなら無視していただけると助かります。
確かに知識不足なのは私の責任ですが、絶好の叩き相手にされるならとても不快です。
プログラムは書いた通りにしか動きません。
1字違えば当然動きません。それだけ繊細なものです。
「a」と「A」すら多くの言語や機能では別のものです。
大事なところなので何度も指摘するわけです。それを余計な一言と言い捨ててしまう人にできるアドバイスはないですよ。
解決する気なしと判断されます。
すみません他の見下すような発言に関してのものでした。
なるほど。半日たってようやくコメント入ったと思ってみたらガッカリしたもので。
別に Orlofskyさんは言い方は厳しいとはいえ、間違ったことは言ってないと思います。
開幕いきなり厳しく指摘したわけではないですしね。
そうですね申し訳ございませんでした。
結局どのように解決とされたのでしょうか。しばらく放置されていた状態でなんの前触れもなく解決とされて困惑しています。
https://teratail.com/help/question-tips#questionTips4-2
フィードバックをください。
回答1件
あなたの回答
tips
プレビュー