• ベストアンサー

前方一致プログラムの書き方

MS-SQLServer7.0を使用してASPと連動したHPを製作しております。 1つの製品情報に複数のバイヤー名(1~5個まで)と 1つのスペックを登録し、このデータベースからバイヤー名の前方一致で製品検索を可能にする場合、aspはどう書けばよいでしょうか?バイヤー情報は別テーブルにあり列を次のようにしたと仮定します。 製品情報====== 製品ID|バイヤーID|仕様| バイヤー情報====== バイヤーID|バイヤー名|

  • hikson
  • お礼率41% (139/338)

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

  • ベストアンサー
  • kumagoro-
  • ベストアンサー率57% (36/63)
回答No.2

SELECT a.製品ID,a.仕様 FROM 製品情報 a INNER JOIN バイヤー情報 b ON a.バイヤーID = b.バイヤーID WHERE b.バイヤー名 LIKE '「前方一致文字列」%' ORDER BY a.登録日 となります。

その他の回答 (1)

  • msystem
  • ベストアンサー率42% (79/186)
回答No.1

ちょっと、質問の範囲が広すぎるような気がします。 SQL文でしたら select 製品ID,仕様 from 製品情報,バイヤー情報 where 製品情報.バイヤーID=バイヤー情報.バイヤーID and バイヤー情報.バイヤー名 like '「前方一致文字列」%' になると思います。(Oracleの書き方なので、少し違うと思います。どなたかINNERJOINで書き直してください) あとは、データの見せ方ですので、デザインととってきたデータを表示する方法です。(そちらを聞きたいのかな?)

hikson
質問者

補足

どうもありがとうございます。 SQL文に絞ってもう一つ質問があります。製品情報テーブルに登録日を加えて、これを登録日順に並べる場合はどうすればよいでしょうか? 製品情報====== 製品ID|バイヤーID|仕様|登録日 バイヤー情報====== バイヤーID|バイヤー名|

関連するQ&A

  • DB設計方法

    MS-SQLServer7.0を使用してASPと連動したHPを製作しております。 1つの製品情報に複数の製品カテゴリ(1~5個まで)と 1つのスペックを登録し、このデータベースから製品カテゴリの前方一致検索を可能にする場合、製品カテゴリは別テーブルにあると仮定して列名を次のうちどちらにしたほうが良いか教えてください。 =====例1===== 製品ID|カテゴリID|スペック| =====例2===== 製品ID|カテゴリID-1|カテゴリID-2|カテゴリID-3|カテゴリID-4|カテゴリID-5|スペック|

  • accessの前方一致検索について

    accessの前方一致検索について質問させてください。 テーブル名:テーブル1 カラム:ID、氏名 ID  氏名 1   山田 太郎 2   山本 博 3   吉田 浩太 上記のようなテーブルがあった場合に、 SELECT ID,氏名 FROM テーブル1 WHERE 氏名 = [氏名を入力してください] このSQLで氏名を入力すると完全一致することはわかったのですが たとえば「山」と入力したら、山田、山本の2名の結果が抽出できるよう 前方一致にしたいのです。 その場合前述のSQLをどのようにすればいいのでしょうか? 教えていただけると幸いです。

  • 前方一致が動的に変更される場合にINDEXは有効になりません。

    いつもお世話になっております。 テーブル同士のLIKE検索(前方一致)を行った場合、 INDEXが有効になりません。 LIKE検索文字列を固定にした場合は、INDEXが有効 になります。 テーブル同士のLIKE(前方一致)でINDEXを 有効にする手段をご教授頂けないでしょうか。 以下、実行結果です。 (1)LIKE検索文字列が固定 ---------------------------------------------------------------------------- EXPLAIN SELECT * FROM wk_dss_data WHERE sys_id LIKE 'M004964%'; ---------------------------------------------------------------------------- Index Scan using i_wk_dss_data_02 on wk_dss_data (cost=0.00..5.25 rows=1 width=311) Index Cond: (((sys_id)::text >= 'M004964'::character varying) AND ((sys_id)::text < 'M004965'::character varying)) Filter: ((sys_id)::text ~~ 'M004964%'::text) (2)テーブル同士のLIKE検索 ---------------------------------------------------------------------------- EXPLAIN SELECT wk_dss_data.comp_id, wk_dss_data.user_id FROM wk_dss_data, t_update WHERE wk_dss_data.sys_id LIKE t_update.sys_id||'%'; ---------------------------------------------------------------------------- Nested Loop (cost=157.00..12505636.00 rows=2500000 width=20) Join Filter: (("outer".sys_id)::text ~~ (("inner".sys_id)::text || '%'::text) ) -> Seq Scan on wk_dss_data (cost=0.00..5479.00 rows=100000 width=31) -> Materialize (cost=157.00..207.00 rows=5000 width=11) -> Seq Scan on t_update (cost=0.00..157.00 rows=5000 width=11)

  • ユーザー認証でSQLのデータと一致するものだけをログインできるようにするには

    PHP初心者です。 タイトルが長くなり、申し訳ありません。 ユーザーのBASIC認証ダイアログを表示させ、データベースのテーブルに書かれたデータと一致するものだけをログインできるようにするにはどうしたら良いでしょうか。 まずデータベースにあるテーブルからIDとパスワードを抽出します。 でも、この場合変数は配列になりますよね。 その配列の変数の宣言の書き方とデータ照合を一致させる方法を知りたくて質問しました。 どうぞ宜しくお願い致します。

    • 締切済み
    • PHP
  • AccessのSQL 部分一致したデータの更新

    以下の様な2つのテーブルが有った場合、[商品テーブルA]と[商品テーブルB] の商品名フィールド同士の商品名が部分一致した場合、 [商品テーブルB]のIDフィールドに[商品テーブルA]のIDフィールドのID番号を 付与したいと考えております。 この様な場合のSQL文を教えて頂けませんでしょうか。 [商品テーブルA] ID  商品名 ------------- 1  A1AAAA 2  A1AAAB 3  A1AABB 4  A1ABBB 5  A1BBBB [商品テーブルB] ID  商品名 -------------    AAAB    AAAA    BBBB    AABB    ABBB SQLの結果として[商品テーブルB]が以下の様に更新される結果を期待しています。 【結果】 [商品テーブルB] ID  商品名 ------------- 2  AAAB 1  AAAA 5  BBBB 3  AABB 4  ABBB 商品名が完全一致する場合であれば、update inner join on set を使えば上手くいのですが、 部分一致の場合どの様にすれば良いのか、行き詰っています。 以上、宜しくお願い致します。

  • ACCESSからSQLServerのデータを取得したい

    SQLServerが利用できない環境にデータを持っていくため、以下のようなシステムを考えております。(テーブルのリンクは不可・手動でのデータのエクスポートは不可) 1.ACCESSのフォームに「データベース名」「テーブル名」を入力し、実行ボタン押下 2.ADOでSQLServerに接続 3.指定のテーブルと同じ構造のテーブルをACCESSに作成 4.SQLServerのデータをACCESSにINSERT ここで質問なのですが、ACCESSは自分のデータベースとSQLServerのデータベースに同時に接続できますか? 同時接続した場合のACCESS/SQLServerの書き分けはどのようになるのでしょうか。

  • SQL文がうまく作れなくて困っています。

    あるテーブルに、営業_id、業務_idがあります。 社員テーブルにある社員_idと一致する社員名を表示させたいのですがうまくいきません。 accessだと、社員テーブルを2つ表示させ、それぞれのテーブルの社員_idを営業_id、業務_idと結合させれば問題なく表示させることができます。 これと同じ事を、aspでやろうとした場合どのようにすればよいのでしょうか?

  • 複数条件の完全一致

    お世話になっております。 androidのアプリケーションを開発しており、 SQLiteを利用しているのですが、 複数条件の完全一致のSQLの指定がわからないため、 質問させていただきます。 ●テーブル名 houmon id| date | time | com ------------------ 1|3/10 |17:00 |goo 2|3/10 |18:00 |okwave 3|3/11 |17:00 |goo 4|3/11 |18:00 |okwave 上記のようなテーブルがあり、 そのうちのdata、time、comの3つが完全に一致するレコードを返す SQLの書き方を教えて下さい。 すいませんが、よろしくお願いします。

  • ACCESSの初歩的な質問です。

    基本的な質問で申し訳ありません。 テーブルAとテーブルB両者のデータベースからIDをキーにして一致しない情報を抽出したいと考えているのですが。 テーブルAを基準にして一致しないレコードAは抽出条件から取り出せるのですが、同じクエリを使用してテーブルBの情報レコードBを取り出せないでしょうか? 簡単に言えばIDをキーにして変更前と変更後の情報を抽出したいのですが。

  • sp_columnsでデータベース名を指定できません

    現在、SQLServer勉強中のものです。たびたびの質問ですいません。 sp_columnsというシステムストアドプロシージャで列情報が取得できますが、@table_nameでテーブルを、@table_ownerで所有者を指定できますよね。 さらに@table_qualifierでデータベース名を指定できると思っていたのですが、これは無理なのでしょうか。 ヘルプには「SQLServerでは、この列はデータベース名をあらわします」とあるのですが、現在、接続データベース以外のデータベースに格納されているテーブルの列情報を参照しようとすると「オブジェクト修飾子の一部になるデータベース名には、現在のデータベースを指定してください。」と表示されてしまいます。 例:TestDB1に接続してTestDB2内のテーブル指定 use TestDB1 sp_columns @table_name=TestDB2Tbl, @table_qualifier=TestDB2