No.4ベストアンサー
- 回答日時:
ご質問の内容が不明瞭ですので、ある仮定に基づいて回答してみます。
テーブル [商品マスタ] から select into でワークテーブル [workDB] を
作成した。テーブル [workDB] を直接開くと、select into に指定した
order by の順にレコードが表示されないが、なぜか?
上記の仮定が正しくなければ、以下の回答はスルーしてください。
上記の仮定が正しければ、それは不具合ではありません。
Access(に限らず多くの RDB)ではごくふつうの現象です。
データの入力順と格納順は必ずしも一致しません。それが利点なのです。
入力した順(この場合は select into に指定した order by の順)と関係
なく、データは空きブロックに配置されていきます。だからこそ、Access は
ディスクを効率的に使用できるのです(Access にはありませんが、サーバ
製品によっては何かの理由で物理ディスク上に順番に格納したい場合のため
にそれ用のオプションが用意されている場合があります。逆に言うと、
ふつうは特別にオプション指定でもしない限り、入力順に物理格納されたり
はしません。効率が悪いからです)。
ソートが重要なら、(入力時ではなく)参照時にクエリで order by 指定
しましょう。テーブルの格納順をあてにすべきではありませんし、テーブル
を直接開いて順番がどうなっているのか気にすべきでもありません(もし
それが気になるなら、RDB ではなく Excel のような表計算ソフトを使った
ほうが、たぶん精神衛生上は よいでしょう)。
ちなみに Access の場合は、主キーが設定されているテーブルであれば、
一応 主キーの順番に表示されることにはなっています。select into で
作成されるテーブルに主キーはありませんから、その場合の表示順は不定
です。
もし主キーがないのに入力順(追加順)にレコードが表示されたとしたら、
運よく連続する空き領域を確保できた場合、ということになります。この
ラッキー(?)は、入力(追加)するデータが多ければ多いほど、そして
ディスクの断片化が進んでいれば進んでいるほど、起こりにくくなります。
No.5
- 回答日時:
テーブルを単にデータシートビューで開いてもコードの昇順に表示
されるとは限りません。「テーブルを作る時のSELECT INTOでORDER BY
したじゃないか」というのは人間の都合で、ORDER BY されたのは元に
なるテーブルが一時的に並べ替えられただけです。
データシートビューにはテーブル毎に独自の書式(列幅、並び順)が
記録されます。掲題の例では品コード、明細番号の2列を選択し、
メニューバーから「レコード→並べ替え→昇順」と設定します。
ビューを閉じる時には変更を記録するかどうか問合せがあります。
但し、SELECT INTO を再実行すると、テーブルは削除→作成となる
ため、同じテーブル名でも表示形式はリセットされます。
希望の並び順になるようなクエリを作成し、そちらを開く方が話が
簡単です。
No.3
- 回答日時:
補足ありがとうございました。
>SELECT 商品マスタ.品コード, 商品マスタ.明細番号 INTO workDB
>FROM 商品マスタ
>ORDER BY 商品マスタ.品コード, 商品マスタ.明細番号;
>データの型はテキストです。
この内容を拝見する限り、問題の状態になる要素はないと思いますので
解決策が解りかねます。
テキスト型の場合、半角全角が混ざっていても ACCESSの場合
逆に同一視されて識別できない事が よく問題なります。
お書きになったSQLからは、別れて並んでしまう点が不明です。
お力になれず、申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Access 昇順・降順で並び替えできない
その他(データベース)
-
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
ACCESSでfilterとorderbyについて
その他(データベース)
-
-
4
ACCESSユニオンクエリでORDER BYエラー
Access(アクセス)
-
5
アクセスでADO 並べ替えが適用できない
Visual Basic(VBA)
-
6
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
7
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
8
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
9
ACCESS 複数のフォームから同一テーブル参照
Access(アクセス)
-
10
ACCESS レコードの並び順について
Access(アクセス)
-
11
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
12
Accessのフォームで思った順番でレコードが表示されない
その他(データベース)
-
13
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
14
accessの処理が遅い
その他(データベース)
-
15
Accessにインポートしたら並び順が変わっちゃった
Access(アクセス)
-
16
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
17
ACCESSのフォームで次のレコードに移動しない方法を教えてください
その他(データベース)
-
18
FindFirst を複数条件で検索
Visual Basic(VBA)
-
19
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
20
Access:クエリーにて集計後に文字列結合したい。
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
ACCESS クエリーでソートの不具合
-
既存データをINSERT文にして出...
-
データ無し時は空白行にしたい...
-
Access特定のテーブルを編集不...
-
Accessの構成をコピーしたい
-
ExcelのMatch関数のようなもの...
-
複数のテーブルからデータを取...
-
テーブル名が可変の場合のクエ...
-
結合したテーブルをSUMしたい
-
SQLサーバに対するSQL文で抽出...
-
ACCESSのVBAにてExcelに行...
-
DB2のSQLコマンドについて
-
「都道府県の面積の大きい順に...
-
SQLで、Join句で結合したテ...
-
sennaの全文検索のクエリについて
-
2つのテーブルをLIKE演算子のよ...
-
テーブルデータの上書きをした...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
既存データをINSERT文にして出...
-
テーブル名が可変の場合のクエ...
-
SQLで、Join句で結合したテ...
-
2つのテーブルをLIKE演算子のよ...
-
結合したテーブルをSUMしたい
-
データ無し時は空白行にしたい...
-
ACCESS クエリーでソートの不具合
-
ADO+ODBCでテーブルに接続する...
-
Accessの構成をコピーしたい
-
「総降水量が100mm以上になる...
-
あってますか?SQL
-
ExcelのVLOOKUP関数の動作をMyS...
-
パススルークエリ&ACCESSテーブ...
-
SQLサーバに対するSQL文で抽出...
-
PRIMARY KEYのコピー
-
ExcelのMatch関数のようなもの...
-
Access 別のDBに対してDlookup...
-
同一テーブル内での比較(最新...
-
Access特定のテーブルを編集不...
おすすめ情報