🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PHP

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

Q&A

解決済

2回答

889閲覧

SQLiteであれこれした後に配列のキーを数値としてソートした結果がほしい

jinba

総合スコア310

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PHP

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

0グッド

0クリップ

投稿2019/10/22 09:41

テーブル名:listBOX

nonamevot1vot2vot3
5阿部6316
63堂上7311
11小笠原563
1京田1116
6平田1116
3高橋1113
7根尾6353

PHP

1$count = <<<EOT 2select 3vot, count(vot) 4from 5( 6SELECT vot1 as vot FROM listBOX WHERE vot1 is not null 7union all 8SELECT vot2 as vot FROM listBOX WHERE vot2 is not null 9union all 10SELECT vot3 as vot FROM listBOX WHERE vot3 is not null 11) 12group by vot 13order by count(vot) DESC 14EOT; 15$st = $pdo->query($count); 16$st->execute(); 17$agg = $st->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_UNIQUE);

実行結果

Array
(
[1] => 4
[11] => 4
[3] => 4
[6] => 4
[5] => 2
[63] => 2
[7] => 1
)

望む実行結果

Array
(
[1] => 4
[3] => 4
[6] => 4
[11] => 4
[5] => 2
[63] => 2
[7] => 1
)

選挙のような投票システムを作っています、1人3票まで投票できるシステムです
SQLは知識が乏しいのですが、いろいろなサイトを調べ票数の集計まではこぎつけました
最後のソートで手詰まっています、どうかご教授ください

selectで[vot」と宣言しているのですがここに何故「no」カラムの数値が入るのかも疑問なくらいの素人です。

本題としては配列のキーを数値としてソートしたいのですがうまくいきません

###試したこと

PHP

1order by count(vot) DESC, TO_NUMBER(vot) ASC 2//Fatal error: Uncaught Error: Call to a member function execute() on bool 3//$st->execute(); <= の行に上記エラー 4 5order by count(vot) DESC, CONVERT(int,vot) ASC 6//Fatal error: Uncaught Error: Call to a member function execute() on bool 7//$st->execute(); <= の行に上記エラー

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

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

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

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

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

guest

回答2

0

自己解決

order by count(vot) DESC

order by count(vot) DESC, CAST( vot AS int ) ASC

上記で解決できました
ありがとうございました。

投稿2019/10/22 10:31

jinba

総合スコア310

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

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

0

SQL

1order by count(vot) DESC 23order by count(vot) DESC, vot

としてみては?

投稿2019/10/22 09:50

Orlofsky

総合スコア16417

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

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

jinba

2019/10/22 10:13

回答ありがとうございます。 結果変わらず Array ( [1] => 4 [11] => 4 [3] => 4 [6] => 4 [5] => 2 [63] => 2 [7] => 1 ) でした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問