データを昇順に並べる方法について

このQ&Aのポイント
  • データを昇順に並べる方法について試行錯誤していますが、エラーが発生しています。
  • 「select id,name,jyusyo,kakaku,gazou,link from kensaku order by kakaku」や「select id,name,jyusyo,kakaku,gazou,link from kensaku order by kakaku asc」といったコードを試しましたが、エラーが出ています。
  • 「select id,name,jyusyo,kakaku,gazou,link from kensaku [where where_definition] order by kakaku」といったコードも試しましたが、エラーが出ています。PHPプロというサイトで教えてもらった方法ですが、正しく動作しません。
回答を見る
  • ベストアンサー

データを昇順に並べるには

$query = "select id,name,jyusyo,kakaku,gazou,link from kensaku where"; と書いてDBから正常にデータが取得できています。これを (1)$query = "select id,name,jyusyo,kakaku,gazou,link from kensaku order by kakaku"; (2)$query = "select id,name,jyusyo,kakaku,gazou,link from kensaku order by kakaku asc"; (3)$query = "select id,name,jyusyo,kakaku,gazou,link from kensaku [where where_definition] order by kakaku";(このやり方はPHPプロというサイトで教えてもらいました) これら三つどれを書いてもエラーになります。どうしたら良いでしょうか??

noname#142312
noname#142312
  • PHP
  • 回答数6
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.5

SQLでselect文を書くときは、 select フィールド名 from テーブル名 が基本になります。 でも、質問者さんが掲載したものはその後に「where」がついていますよね? こういうときは、 select フィールド名 from テーブル名 where 検索条件 という書式になります。 なので、最初に示された > $query = "select id,name,jyusyo,kakaku,gazou,link from kensaku where"; は、その後で検索条件を追加しているはずなんです。 この検索条件がなんなのかは、回答者側には判りません。(当然ですよね?) #2、3、4さんは、このことを言っています。 本来は、検索条件の「後」に並べ替えの「order by」句がきます。 でも今のまま書き換えても、書き換えた後に「検索条件」が追加されているはずなので、 select フィールド名 from テーブル名 order by ソート条件 検索条件 になるので、エラーになっているんでしょう。 検索条件を追加している場所を探して、その後で並べ替えを追加しないと書式がばらばらになって居るんですよ。

noname#142312
質問者

お礼

ありがとう。

noname#142312
質問者

補足

どのように追加したら良いですか? select * from kensaku where 検索条件 ソート文 このソート文はどのような記述をしたら良いですか?

その他の回答 (5)

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.6

#5です。 少しはSQL文について「自分」で調べた方が良いですよ? 今回の場合は、前の補足で自分が書いているとおり 「order by kakaku」 が、ソート条件でしょ? これを、 「~where」 の後で、検索条件を追加している後に追加するだけです。 「どこで、検索条件を追加しているか」は、質問者さんしか判りません。 自分で探しましょう。

noname#142312
質問者

補足

条件文の最後にオーダーバイつけたら良いのですね?

回答No.4

ここまで話がかみ合わないと、回答不能です。 SQLの基礎をしっかり学んで欲しい。

回答No.3

どんなのですかと言われても、DBの中身を知らない私に答えることはできません。どんな条件でデータを取り出したいのか分かりませんから。 あなたが、欲しいと思うような解答がなかなかつかないのも、こうした理由だからではありませんか?

noname#142312
質問者

補足

いや、質問内容にkakaku ascと書いてあるから、kakakuを昇順にしたいと解ると思いますが。

回答No.2

SELECT fields FROM table Where 式 order by fields [ASC|DESC]

noname#142312
質問者

補足

whereの後の式とはなんですか?

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.1

>$query = "select id,name,jyusyo,kakaku,gazou,link from kensaku where"; >と書いてDBから正常にデータが取得できています。 ということは $query = "select id,name,jyusyo,kakaku,gazou,link from kensaku where"; の後に検索の条件があります。 $query = $query + "id = 1" '(文字列を連結するのは + でいいのかな?) とかで検索の条件をいれないとDBから正常にデータが取得できません。 そして、order by ・・・ は、この検索の条件の後ろに記述します。 ということで、検索の条件をDBに渡しているところをさがしてください。 その次にorder by・・・を記述するとうまくいきます。

noname#142312
質問者

補足

う~ん、よければ例文願います(*^_^*)

関連するQ&A

  • Warning: mysql_num_rows()

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in と、phpでエラーが出ます。調べた結果クエリに問題があるということです。 クエリは $query = "select name,jyusyo,kakaku,gazou,link from kensaku order by kakaku asc"; です。なにがおかしいのでしょうか??カカクカラムを昇順に呼び出したいのですが。。。

    • ベストアンサー
    • MySQL
  • 条件のAND検索??

    条件のAND検索?? 現在 □豊岡市 □神戸市 □篠山町 みたいなチェックボックスの検索システムが有ります。 これを 地域(カラム=jyusyo) □豊岡市 □神戸市 □篠山町 予算(カラム=kakaku) [ 円]~[ 円](option属性) と新たに付け加えたいです。 現在の検索システムのソースは $jyusyo=$_POST["jyusyo"]; $jyusyonum=array("豊岡市","養父市","朝来市","神戸市","姫路市"); $query = "select name,jyusyo,kakaku,gazou,link from kensaku where"; if($jyusyo != "") { foreach ($jyusyo as $value) { $like .= "'" . $value . "',"; } //最後の , を削除 $like = substr($like, 0, -1); $query = $query . " jyusyo in ($like) "; } をどのように変更したら良いですか?? 試行錯誤しましたが、それらをここで説明したら長くなるので書きませんが丸投げしてるわけでは御座いません。よろしくお願いします。

    • ベストアンサー
    • PHP
  • MySQLで昇順に並べ替え

    MySQL(データベース)で商品名と価格を格納したテーブル(syouhin)があります。商品名のキーワードを入力するフォーム(form.html)とデータを受け取る(kensaku.php)があり、以下のようにデータを表示させています。 <!-- form.html --> <html> <head> <title>商品名と価格</title> </head> <body> <form method="get" action="kensaku.php"> <input type="text" name="name"> <input type="submit" name="submit" value="検索"> </form> </body> </html> //kensaku.php <? $name=$_REQUEST["name"]; $conn = mysql_connect ("localhost", "username", "password") or die ('接続できませんでした'); mysql_select_db ("db",$conn); //クエリ生成 $sql = "select * from syouhin where name like '%$name%'"; $res = mysql_query($sql); while($row = mysql_fetch_array($res)){ echo "<table border='1' cellpadding='0' cellspacing='0'>"; echo "<tr>"; echo "<td>".$row[name]."</td>"; echo "<td>".$row[price]."</td>"; echo "</tr>"; echo "</table>"; } ?> ここから質問なんですが、今結果が表示されているまさにそのページで、並べ替えをしたいのです。よく検索結果の並べ替えで、[価格の安い順に並べる]をクリックすると並び変わるのがありますよね。それと同じ事をしたいのです。 僕が考えた方法は、もう一つのページ(例えば、kensaku_asc.php)を作って、 $sql = "select * from syouhin where name like '%$name%'"; の部分だけを $sql = "select * from syouhin where name like '%$name%' order by price"; に変えて、そのページにリンクさせる。でもその場合、form.htmlから受け取ったデータ(ここでは商品名のキーワード)を引き継ぐという事ができないので、そのあたりのところのヒントをいただければと存じます。よろしくお願いします。

    • 締切済み
    • PHP
  • phpでmysqlからデータを取り出して一覧表示

    phpでmysqlからデータを取り出して一覧表示させるプログラムを造りたいのですが、どうもうまくいきません。まずはデータの取り出し表示の仕方を教えてください。 $sqlstr="select * from webdiary where username=$id order by topicid asc"; $result = mysql_query( $sqlstr ); この後どのようにしたらよいでしょうか?

    • ベストアンサー
    • PHP
  • データ関連付け2

    $sql = "SELECT a.jyusyo,a.name,a.gazou,avg(b.hyouka) FROM iza AS a, iza2 AS b WHERE a.id=b.id"; これだと全てのhyoukaカラムの平均を出してしまいます。 b.idに id hyouka 0  5 0  3 0  2 1  5 1  5 あるとしたら id0の平均、id1の平均とid事に分けたいんですがどうしたらいいでしょうか??

    • ベストアンサー
    • MySQL
  • データ関連付けした際

    $sql = "SELECT a.jyusyo,a.name,a.gazou,b.hyouka FROM iza AS a, iza2 AS b WHERE a.id=b.id"; 上記のb.hyoukaの平均を取り出したく$row[avg(hyouka)]; としても何故か出力されません。 原因はなんでしょうか??

    • 締切済み
    • PHP
  • mysql内データ検索結果の表示順について

    mysql内のデータを条件検索する時、検索結果の表示順を指定します。 新着順(id降順)で指定する場合のエラーについてアドバイスをいただけないでしょうか。 例えば、DB内データを降順で全件表示する場合は、 $query = "SELECT * FROM テーブル名 ORDER BY id DESC"; とすることでできると思います。 そこで、条件検索で結果表示をする場合は、上記の通りにしてもエラーが発生します。これについてのコードは以下のような感じです。 $query = "SELECT * FROM テーブル名 ORDER BY id DESC"; $where = array(); if (isset($_GET['area'])and($_GET['area'] !== '')) { $where[] = sprintf("(area='%s')", mysql_real_escape_string($_GET['area'])); } if (count($where) <> 0) { $query .= ' where ' . implode(' and ', $where); } これは、ORDER BY id DESCを書く位置が悪いのでしょうか? order by句は$query = select ~~~のあとに付けるという認識だったのですが、場合によって間違いとなるということなのでしょうか。 アドバイスをいただければ幸いです。

    • 締切済み
    • PHP
  • 2個のカラムに対して、ORDER BYをする方法

    タイトルの通りなのですが picture_idとgrp_idは連番になっているのですが どちらか片方に対して、ORDER BYを行った場合 もう一方の連番が崩れてしまいます。 FROM区で、2つのカラムに対して ORDER BY ASC をする方法はあるのでしょうか? SELECT p.picture_id, p.grp_id, FROM hogehoge_info AS p WHERE ORDER BY p.picture_id ASC ORDER BY p.grp_id ASC 知っている方、いらっしゃいましたら ご教授お願い致します。

    • ベストアンサー
    • MySQL
  • 重複データからの取得方法を教えてください

    id s_no s_name ---------------- 1 001 aaaa 2 005 bbb1 3 005 bbb2 4 002 cccc 5 005 bbb3 6 005 bbb4 上のものがテーブルの内容です。取得したい結果が ---------------- 1 001 aaaa 4 002 cccc 5 005 bbb3 です。 試したSQLは select distinkd on (s_no) id,s_name from shain where id>=5 order by id desc select id,s_no,s_name from shain where id>=5 group by s_no order by id desc などです。 データベースがmdbなのでdistinkd onは使えませんでした。 もしかすると書式が違うのでしょうか?

  • クエリの遅さの原因

    下記のクエリーをそれぞれ試してみたところ、圧倒的に下の方が遅くなってしまいました。 $rs = mysql_query("select * from A INNER JOIN B ON B.cat = A.id order by B.id desc LIMIT 1, 10 ;",$con); $rs = mysql_query("select * from A INNER JOIN B ON B.cat = A.id where B.name is not null group by B.area order by B.id desc LIMIT 1, 10 ;",$con); where B.name is not null group by B.area この処理はそれほど負荷が掛かってしまうのでしょうか。 他に良い書き方(方法)がありましたら教えてください。

    • ベストアンサー
    • MySQL

専門家に質問してみよう