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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

17835閲覧

結合からのORDER BY(並べ替え)

Takahito

総合スコア66

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2016/06/21 10:41

編集2016/06/21 10:58

結合してから、並び替えを行いたいのですがうまくいきません。

何回も確認しているのですが、どこか問題があるのでしょうか?

'SELECT * from projectlist JOIN product ON projectlist.product_num = product.product_num ORDER BY id ASC;'

結合まではできていて、表示されます。
しかし、ORDER BYが効かないようで。。

ちなみに、javascriptのalasqlで実行をしています。

ご教示していただきたいです。
よろしくお願いします。

追加編集
データ定義
projectlist
id int, project_num int IDENTITY, product_num int, product_name string, quantity int

product
id int, product_num int ,product_name string

というようなデータです。

症状は、外部結合した状態から、ORDER BYをつけても何も変化がおきないことです。

よろしくお願いいたします。

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

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

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

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

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

masaya_ohashi

2016/06/21 10:47

テーブル定義がないとなんともいえません。開示できるなら質問文にテーブル定義を追記お願いします。
KiyoshiMotoki

2016/06/21 10:49

「うまくいきません」だけでは、状況がわかりません。どのような現象またはエラーが発生しているのか、明記してください。また、お使いのDB製品のタグも追加すると、回答がつきやすくなると思います。https://teratail.com/help/question-tips#questionTips3
guest

回答2

0

ベストアンサー

ORDER BY id ASC
だけでは、結合したテーブルどちらにもidがあるのでどちらでソートするのかSQLが判断できません。
ORDER BY projectlist.id ASC
ORDER BY product.id ASC
のいずれかにしてください。

投稿2016/06/21 11:01

masaya_ohashi

総合スコア9206

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

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

Takahito

2016/06/21 11:16

ありがとうございます。 その可能性があるのですね、試みたような気もするのですが明日また講義の際に試してみようと思います。 正解例を見ていると * を使っていないことに気づいたのですが、*は結合の並び替えの場合問題になったりしないのでしょうか?
masaya_ohashi

2016/06/21 11:20

私の回答のように、「どっちのテーブルの」カラムでソートするのか指示すれば問題ありません。むしろ、*で何でもかんでも取ると、値をカラム名から参照するときに困りますね。全く同じカラム名で、全く違う値が入っていると困ります。
Takahito

2016/06/21 11:33

そうなんですね。 *でなんでも取ると確かに困りそうです。 今は、まだ結合をしてもカラムの量がそれほど多くならないのでひとつひとつのカラムを入力しても、そこまで困るようなことはない気がしますが、多くなった場合には、大変ではないですか? 何か工夫されたりしてらっしゃるんですか?
masaya_ohashi

2016/06/21 11:48

基本的にキーとなるカラムの名前以外被らないように設計しているので大抵は*で事足りています
Takahito

2016/06/21 12:56

今回の場合は、データベースの設計自体に問題があったということですね。 ありがとうございます!
guest

0

たとえば

projectlist と product にともにidカラムがあって
どちらでソートが競合しているとか

投稿2016/06/21 11:02

yambejp

総合スコア114863

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

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

Takahito

2016/06/21 11:17

ありがとうございます。 お2人から同じような内容を指摘していただいたので、もしかするとこの可能性が高いかもしれません。 結合された時点で統合されるというようなイメージを持っていたのですが違うのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問