質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Q&A

解決済

2回答

496閲覧

定価と割引価格を合わせて並び替えをしたい(PHP,MySQL)

negita0007

総合スコア2

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

0グッド

1クリップ

投稿2022/07/26 09:48

編集2022/07/26 09:50

前提・実現したいこと

商品の定価と割引価格を別のカラムに登録していて、
通常の商品は定価、
賞味期限が迫っているものは割引価格を表示するようにしています。

この際、定価・割引価格に関わらず表示される金額順に並び替えをしたく、
下記のデータで、金額高い順にした場合、A→C→B→Dとなるようにしたいです。

商品定価割引価格表示価格
A15,0009,000定価
B12,00010,000割引
C11,0005,000定価
D9,0008,000割引

試してみたこと

ORDER BYや連想配列の並び替えで試しましたが、
定価高い順→割引価格高い順で並び替わってしまいます。

2つのカラムを同時に比較する方法をご教示いただけますと幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

sql

1select 2 `商品`, 3 case `表示価格` 4 when '定価' then `定価` 5 when '割引' then `割引価格` 6 end case as `price` 7from `テーブル` 8order by `price` desc

投稿2022/07/26 09:57

phper.k

総合スコア3923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

negita0007

2022/07/27 06:00

ありがとうございます。意図した動きにできました! 迅速にご回答いただき、たいへん助かりました。
guest

0

SQL

1create table tbl( 2商品 varchar(10),定価 int,割引価格 int,表示価格 varchar(10)); 3insert into tbl values 4('A','15000','9000','定価'), 5('B','12000','10000','割引'), 6('C','11000','5000','定価'), 7('D','9000','8000','割引'); 8 9select * from tbl 10order by (表示価格='定価')*定価+(表示価格='割引')*割引価格 desc

調整

予め生成列を設定しておくという手もあります

SQL

1create table tbl( 2id int primary key, 3商品 varchar(10), 4定価 int, 5割引価格 int, 6表示価格 enum('定価','割引'), 7価格 int as ((表示価格='定価')*定価+(表示価格='割引')*割引価格 ) 8); 9 10insert into tbl(id,商品,定価,割引価格,表示価格) values 11(1,'A','15000','9000','定価'), 12(2,'B','12000','10000','割引'), 13(3,'C','11000','5000','定価'), 14(4,'D','9000','8000','割引'); 15 16select * from tbl 17order by 価格 desc;

投稿2022/07/26 10:26

編集2022/07/26 10:44
yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問