表の横をそろえる方法は?

このQ&Aのポイント
  • SQL*Plusを使用している初心者です。表の横を一列に揃える方法が分かりません。どのコマンドを使えば良いでしょうか?
  • 表の見た目を整えるためには、SQL*Plusのフォーマットコマンドを使用することができます。具体的なコマンドについては、Oracleの公式ドキュメントやオンラインのチュートリアルを参照してください。
  • 表の行と列を整理するためには、SQL*Plusのセレクト文でレイアウトオプションを使用することができます。詳細な使い方については、Oracleの公式ドキュメントをご確認ください。
回答を見る
  • ベストアンサー

表をきれいにするために。

表をきれいにするために。 SQL> run; 1 select rep.rep_num, first_name, last_name, customer.customer_num, customer_name, credit_limit - balance "Credit_Remaining" 2 from rep, customer 3 where customer.credit_limit - customer.balance > 4 (select AVG(customer.credit_limit - customer.balance) 5 from customer) 6* and rep.rep_num = customer.rep_num RE FIRST_NAME LAST_NAME CUS CUSTOMER_NAME -- --------------- --------------- --- ----------------------------------- Credit_Remaining ---------------- 35 Richard Hull 282 Brookings Direct 9568.5 35 Richard Hull 725 Deerfield's Four Seasons 7252 65 Juan Perez 462 Bargains Galore 6588 65 Juan Perez 608 Johnson's Department Store 7894 この表の横(tuple とattribute)を一列にどうしてもそろえられないのですがどうすれば良いでしょうか? 何かそれをするためのコマンドがありますか? 本を見ても見つかりませんでした。 初めての質問ですがよろしくお願いします。Oracle SQL*Plusを使ってます。 場違いでしたらすみません。

  • Oracle
  • 回答数2
  • ありがとう数7

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

行バッファサイズが初期値80だから。 Set linesize 300 とでもしておく。 ただ、これを設定してSPOOLに吐き出すと、右余白の多さに苦しみます。 なので Set TrimSpool on も設定。 あと、ヘッダーを最初の一回のみにしたいなら、 set PageSize 0 も設定。

ifthen
質問者

お礼

この方法で解決できました。わざわざありがとうございました!

その他の回答 (1)

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.1

SQL*PLusの表示上の問題ですよね。 横のの表示幅の変更 set line 200 リファレンスを参照してください。 http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19277-01/toc.html

ifthen
質問者

お礼

リファレンスありがとうございました!

関連するQ&A

  • nextvalについて

    Customer_IDに格納する新しい値を取得し、新規顧客に関する情報をCustomer表に格納するストアードファンクションの例 create or replace function Get_New_Customer_ID (Salutation varchar2, Last_Name varchar2, First_Name varchar2, Street_Address varchar2, City varchar2, State varchar2, Zipcode varchar2, Home_Phone varchar2, Work_Phone varchar2) return number is New_Customer_ID number(4); begin select Customer_Sequence.nextval into New_Customer_ID from dual; insert into Customer (Customer_ID, Salutation, Last_Name, First_Name, Street_Address, City, State, Zipcode, Home_Telephone_Number, Work_Telephone_Number) values (New_Customer_ID, Salutation, Last_Name, First_Name, Street_Address, City, State, Zipcode, Home_Phone, Work_Phone); return New_Customer_ID; end; / において、 select Customer_Sequence.nextval into New_Customer_ID from dual; のCustomer_Sequence.nextvalがどういう意味なのかわからくて困っております。dualという表しか使っていないのに、Customer_Sequenceという表のnextvalという列から取り出しているように見えて違和感を感じるのです。また、新しい値を取得というのは、ユーザがキーボードで打ち込むのでしょうか? また、dualはシステムで用意されている表なのでしょうか?

  • 複数テーブルを検索するクエリの実行時間を短縮したい

    feedというテーブルには site_name, site_url, feed_name, feed_url, date, count feed_urlがプライマリーの6つのフィールドがあり、 siteというテーブルには site_name, site_url, first_date, last_date site_urlがプライマリーの4つのフィールドがあります。 feedテーブルのsite_urlとsiteテーブルのsite_urlには全く同じものが入っています。 この二つのテーブルを用いて、以下のような条件でレコードを取り出したいです。 ・site_urlごとのfeed.countの平均値を取得 ・取得した平均値をソート(DESC) ・一週間前までのfeed.dateの中から ・site_urlとsite_nameとfirst_dateとlast_dateと算出した平均値を取り出したい 以下のようなSQL文を作ってphpMyAdminから実行してみたのですが、2秒ほどかかってしまいました。より高速に取り出すことはできますでしょうか? //0.5程度で終わる //これプラスsiteテーブルのfirst_dateとlast_dateも取り出したい。 SELECT site_name, site_url, AVG( count ) FROM `feed` WHERE DATE > '2011-01-10 00:00:00' GROUP BY site_url ORDER BY AVG( count ) DESC LIMIT 0 , 30 //2秒ほどかかる //目的のレコードが取り出せる。 //このSQLを高速化したい。 SELECT site.first_date, site.last_date, feed.site_name, feed.site_url, AVG( feed.count ) FROM `feed` , `site` WHERE feed.date > '2011-01-10 00:00:00' AND feed.site_url = site.site_url GROUP BY feed.site_url ORDER BY AVG( feed.count ) DESC LIMIT 0 , 30 できれば1秒以内が理想なのですが、そこまで高速にすることは可能でしょうか? もし可能な場合は、そのSQL文を教えて頂ければ幸いです。(1秒以内でなくても高速になれば嬉しいです。) よろしくお願いします。

    • ベストアンサー
    • MySQL
  • PHP+MySQL

    PHP4で、MySQLに接続しています。 $connには、接続IDが格納されています。 以下のスクリプトで、「エラー」が出てしまうのですが、何故でしょうか? $sql = "SELECT (User_num, User_name, User_pass) FROM User WHERE User_name='$login_name'"; if (!$result= mysql_query($sql, $conn)){ die (print ("エラー")); } SQL文を、 SELECT (User_num) FROM User WHERE User_name='$login_name' と書き換えるとうまくいきます。複数にするとエラーというのはどうしてでしょう

    • ベストアンサー
    • MySQL
  • 次の条件を満たすSQL文をご教示下さい。

    テーブル名: list no | first_name | last_name | comment ----+------------+-----------+--------- 1 | 太郎 | 山田 | ほげ 2 | 次郎 | 田中 | ふが 3 | 花子 | 山田 | ぴよ 4 | 三郎 | 佐藤 | ぴよ 5 | 太郎 | 山田 | ぴよ 6 | 次郎 | 田中 | ふー 7 | 三郎 | 佐藤 | ふー 8 | 花子 | 山田 | ふー 上記の表から同じ”last_name”を持つ人の”first_name”と”last_name”を重複無しで抽出する(下記のような結果)SQL文は作成可能でしょうか。 結果 first_name | last_name ------------+----------- 太郎 | 山田 花子 | 山田 宜しくお願いします。

  • 重複データを一つづつ表示したいです。

    mysqlの命令文等いろいろと試行錯誤しています。 添付画像のように、attachment_nameは画像なのですが、item_idが重複されていますので どれでもよろしいですので、各一つづつ表示させたいです。 mysql文はいろいろと結合していますが、下記の通りです。 function getfeatured01($sales_type='rental'){ $db = Database::instance(); //$rsfeat = $db->query("select item_id from items"); $sql = "SELECT *, attachment.name as attachment_name, ldk_type.id as ldkid, ldk_type.name as ldkname, caution_money_num.name as cautionmoneynum_name, reward_num.name as rewardnum_name FROM items INNER JOIN ldk_type ON ldk_type.id = items.ldk_type INNER JOIN caution_money_num ON caution_money_num.id = items.caution_money_num INNER JOIN reward_num ON reward_num.id = items.reward_num INNER JOIN attachment ON attachment.item_id = items.item_id WHERE sales_type = 'rental' and status = '1' order by price asc LIMIT 0,20 "; $rsfeat = $db->query($sql); return $rsfeat; } いろいろと検索してみますが、基本がなっていないせいか、理解ができません。 今回MySQLをご指導いただきたく質問いたしました。 申し訳ございませんが、ご指導のほど、宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • mysql>PHPにデータ表示、10件ごとにページ分割

    はじめまして、PHP勉強中の初心者です。。 MYSQLから取り出したデータを件数でページ分割したいのですが、 うまくきません。。 環境:eclipse3.5、mysql5.0、php5.0、xampp (phpで、sql接続、select * from でデータは表示は確認できてます)。。 ソースは↓です。。(初心者なもので不備がればすみません)。。 eclipse上では if (($page_num+1)*10<$cnt) {}でエラーで表示されます。。 どなたかご存知の方いましたら、教えていただけないでしょうか? <!--kensaku.html--> <html> <body> <form action ="kensaku.php" method="post">    名前:<input type="text" name="nm">    年齢:<input type="hidden" name="page_num" value="0">    <input type="submit" name="exec" value="検索"> </form> </body> </html> //kensaku.php ソース <html> <body> <? $nm=$_POST['nm']; $page_num=$_POST['page_num']; //データベースに接続 if (!$conn =mysql_connect("","user","PASS")) { echo "接続エラー" ; exit ; } //データベースを選択 if (!mysql_select_db("table", $con)) { echo "データベース選択エラー" ; exit ; } //LIMITを使ったSELECT文を作成 $sql = "select id,name from table " ; $sql.= "where name like '%$nm% ' order by id " ; $sql.="limit" . $page_num * 10 . ", 10" ; //SQL実行 if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } //検索結果表示 echo "<table border=1>" ; echo "<tr><td>id</td><td>name</td></tr>" ; while($row = mysql_fetch_array($res)){ echo "<tr>" ; echo "<td>" . $row["id"] . "</td>" ; echo "<td>" . $row["name"] . "</td>" ; echo "</tr>" ; } echo "</table>" ; //検索条件に該当する全データの件数取得 $sql = "select count(*) from member " ; $sql.="where name like '% $nm % ' order by id " ; if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } $row = mysql_fetch_array($res) ; $cnt = $row[0] ; //ページ表示 if(!$cnt > 10) echo ceil($cnt / 10), "ページの中の", $page_num + 1, "ページ目を表示<br>"; //前の10件 if ($page_num !=0) { echo "<a href = kensaku.php?nm=".$nm.",".$page_num -1..">"; echo "&lt 前の10件"; } //次の10件.--ここからエラー行ですが、、解決策がわかりません。。 if (($page_num+1)*10<$cnt) { echo "<a href = kensaku.php?nm=".$nm.",".$page_num +1..">"; echo " 次の10件 &g</a>t"; } //結果セットの開放 mysql_free_result ($res) ; //データベースから切断 mysql_close($con) ; ?> </body> </html> すみませんが、ご存知の方いましたら、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php5+Mysql5による条件検索とその表示方法が上手く動作しないのでどなたかご指摘をお願いします。

    phpにて条件検索を行っているのですが、『where』以下を$変数にすると動かなくなってしまいます。記述部分で何が間違っているのでしょうか? 以下記述↓ <? $link = db_con(); //←DB接続 $sql = "select * from tbl where id = '" . mysql_real_escape_string( $_GET['id'] ) . "' and name like '%" . mysql_real_escape_string( $_GET['name'] ) . "%' "; $result = mysql_query( $sql ) ; $num_rows = mysql_num_rows( $result ); ?> ここまで↑ を下記のように『where』以下を$変数にして代入 $変数した場合↓ <? $where .= "id = '" . mysql_real_escape_string( $_GET['id'] ) . "' and name like '%" . mysql_real_escape_string( $_GET['name'] ) . "%' "; $link = db_con(); //←DB接続 $sql = "select * from tbl where $where "; $result = mysql_query( $sql ) ; $num_rows = mysql_num_rows( $result ); ?> ここまで↑ どなたかご指摘をお願いします。

  • Postgresqlの自己結合について

    first_table f_id f_name 1 鈴木 2 田中 3 佐藤 last_table l_id l_name 1 一郎 1 二郎 2 太郎 3 次郎 欲しい結果 id f_name l_name1 l_name2 1 鈴木 一郎 二朗 2 田中 太郎 (空白もしくはNULL) 3 佐藤 次郎 (空白もしくはNULL) PHP4.3.2とPostgresql7.4.29の環境です。 first_tableとlast_tableの2つのテーブルがあって、 欲しい結果のような表を作成したいです。 l_name1やl_name2でのキーワード検索も行いたいので、1つのSQL文を発行したいのですが、 どのように書けば良いのでしょうか? last_tableを自己結合し、first_tableと結合するのが近い気がするのですが。 SELECT * FROM first_table AS f INNER JOIN ( SELECT l1.l_id, l1.l_name AS l_name1, l2.l_name AS l_name2 FROM l_table AS l1, l_table AS l2 WHERE l1.l_name > l2.l_name AND l1.l_id = l2.l_id ) AS l ON f.f_id=l.l_id よろしくお願いします。

  • limitを使ったときの総数を表示させるには?

    東京在住の人を20人リストアップ。 総数を求めたい場合、SQL_CALC_FOUND_ROWSを使えば求めららるところまで分かりました。 SELECT SQL_CALC_FOUND_ROWS name,ken FROM `table` WHERE ken like '%東京%' limit 0,20 SELECT FOUND_ROWS(); このSQL_CALC_FOUND_ROWS の値をPHPで出力させるにはどのようにしたら良いのでしょうか?

    • 締切済み
    • PHP
  • SQL whereの中のif文について

    SQLの中にif文を使いたいですが、 うまくいきません。 やはりwhereの中で使えないですか? アドバイスお願いします。 実際のSQL文: $sql = "select * from room";     $sql = $sql . " WHERE ((Keisai = 1)"; if(Chinryou1>0){ $sql = $sql . " and (Chinryou1 <= {$rent1})";     }else if(Chinryou1==0){ $sql = $sql . " and (Chinryou2 <= {$rent1})";    } $sql = $sql . ")"; $sql = $sql . " order by Narabijun desc, Name"; $sql = $sql . ";"; $result = mysql_query($sql, $conn); $num = mysql_num_rows($result);

    • ベストアンサー
    • MySQL