プロが教える店舗&オフィスのセキュリティ対策術

ASP+SQLServerを使用することになりました。(どちらも不得意です)
簡単なことかもしれませんがよく分からず数日悩んだ末、混乱してきたので質問させて頂きます。
助言をお願いします。

tableAにはa,b,c,d,eの5つのカラムがあります。

1) hogeと言う文字列が含まれたデータをc,d,eの三つのカラムの中から抽出。
2) 更に、その抽出結果が含まれたデータをtableBのカラムfから抽出。
3) 最終的にtableA.a, tableA.b, tableA.c, tableB.fと言う一覧を出したい。

のですが思ったように行きません。

1)の3つ目のカラムをtableB.fとinner join出来たら良いのに。と思いますが
1)が含まれる文字列になるので上手く行きません。

分かり難い表現で申し訳ありません。助けてください。
宜しくお願いします。

A 回答 (5件)

遅くなりました。

これでどうでしょう?


select 大分類, 中分類, 小分類, 品名
from (
SELECT tableA.大分類, tableA.中分類, tableA.小分類, tableA.和名 as key1 FROM tableA WHERE ((tableA.和名) Like '%hoge%')
UNION
SELECT tableA.大分類, tableA.中分類, tableA.小分類, tableA.カナ as key1 FROM tableA WHERE ((tableA.カナ) Like '%hoge%')
UNION
SELECT tableA.大分類, tableA.中分類, tableA.小分類, tableA.英名 as key1 FROM tableA WHERE ((tableA.英名) Like '%hoge%')
) Q_A, tableB Q_B
where Q_B.品名 like '%'+Q_A.key1+'%'
    • good
    • 0
この回答へのお礼

ありがとうございました。
旅行に行っていた為、お礼が遅くなり申し訳ありませんでした。

'%'+Q_A.key1+'%'

+で囲むんですね。変数を入れるしか無いのかと悩んでいたのでスッキリしました。

お礼日時:2006/07/13 21:22

返事が遅れました。



文字列「イチゴ」が、
tableAの和名、カナ名、英名のいずれかに含まれていて、
その抽出した和名 or カナ名 or 英名が、
tableBの品名に含まれている
という検索がしたいのであれば、

回答者:sakko99 がANo.4で書いてくれたSQLで正解だと思います。


ただ、ANo.3の補足のところで、
質問者:KENT-MILD9さんが書いてくれたデータ例に気になる点があります。

【TableBの情報】
> TableBのカラムfには例えば
> [苺飴,イチゴキャンディー,strawberry candy]
> [胡麻飴,ゴマキャンディー]
> [水飴]
> [orange candy]

【TableAの情報】
> 大分類|中分類|小分類|和名 |カナ名         |英名
> ----------------------------------------------------------------------
> お菓子|その他|飴  |苺飴 |ストロベリーキャンディー|strawberry candy
> お菓子|その他|飴  |胡麻飴|ゴマキャンディー    |sesame candy


このデータだと、
SQLを実行すると検索結果は0件になります。
TableAのカナ名の「ストロベリーキャンディー」は、
「イチゴキャンディー」の間違いでしょうか?

もし、このデータを正として質問のような検索結果が得たいのであれば、
SQLは全く違うものになります。

KENT-MILD9さんの質問意図をとらえ違えているといけないので
補足をよろしくお願いします。
    • good
    • 0
この回答へのお礼

申し訳ありません。イチゴキャンディーの誤りです。
親身にご回答頂き感謝致します。
一人で悩んでいても解決しなかったので心強かったです。
この度はありがとうございました。

お礼日時:2006/07/13 21:24

TableAの和名に「品目A」「品目B」、TableBのカラムfに「aa品目A11」「aa品目A12」「bb品目B11」「bb品目B12」が


入っている場合があるということでしょうか。

この場合、「品目」で検索して、欲しい結果は以下ですか?

TableAの和名 TableBのカラムf
品目A     aa品目A11
品目A     aa品目A12
品目B     aa品目B11
品目B     aa品目B12

和名、カナ名、英名の扱いは判りましたが、TableBのカラムfの情報をもう少し具体的にお願いします。

この回答への補足

TableBのカラムfには例えば
[苺飴,イチゴキャンディー,strawberry candy]
[胡麻飴,ゴマキャンディー]
[水飴]
[orange candy]
と言うように和名、カナ名、英名が混在していて、tableAは

大分類|中分類|小分類|和名 |カナ名         |英名
----------------------------------------------------------------------
お菓子|その他|飴  |苺飴 |ストロベリーキャンディー|strawberry candy
お菓子|その他|飴  |胡麻飴|ゴマキャンディー    |sesame candy

と言う感じのデータが入っています。
イチゴで検索した時に以下のように表示されれば良いと思っています。

tableA.大分類|tableA.中分類 |tableA.小分類 |tableB.品名
----------------------------------------------------------------------
お菓子 |焼き菓子 |クッキー   |イチゴクッキー
お菓子 |氷菓子  |アイスクリーム|ストロベリーアイス
お菓子 |その他  |飴      |苺飴

見難くて申し訳有りません。
これでイメージが伝わったら幸いです。

補足日時:2006/07/06 20:50
    • good
    • 0

質問内容に不明な点があるので、詳しく追記をおねがいします。



> 1) hogeと言う文字列が含まれたデータをc,d,eの三つのカラムの中から抽出。
> 2) 更に、その抽出結果が含まれたデータをtableBのカラムfから抽出。

 →tableAとtableBを結合する条件を詳しく教えてください。
  上記の表現ではわかりません。


> 1)が含まれる文字列になるので上手く行きません。

 →言っている意味がわかりません。
  具体的に、実行したSQLを載せてください。

よろしくお願いします。

この回答への補足

このような質問にご回答ありがとうございます。情報が足りず失礼致しました。

tebleBのカラムfは品名です。現在このカラムのデータは和名、カナ名、英名が混在しています。
そして、その品名を補完する為のデータがtableAに格納されています。(大分類、中分類、小分類、和名、カナ名、英名)
今回は検索したい文字列が和名、カナ、英名のいずれかなのでtableAに問い合わせ、そのデータが含まれるtebleBのカラムfのデータを紐つけて表示させたいと思っています。

こんなイメージです。
tableA.大分類, tableA.中分類, tableA.小分類, tableB.品名


以下で和名、カナ、英名カラムを和結合(大分類、中分類、小分類カラムを表示)

SELECT tableA.大分類, tableA.中分類, tableA.小分類, tableA.和名 FROM tableA WHERE ((tableA.和名) Like '%hoge%')
UNION SELECT tableA.大分類, tableA.中分類, tableA.小分類, tableA.カナ FROM tableA WHERE ((tableA.カナ) Like '%hoge%')
UNION SELECT tableA.大分類, tableA.中分類, tableA.小分類, tableA.英名 FROM tableA WHERE ((tableA.英名) Like '%hoge%')

全てSQL文でやってしまいたかったのですが良く分からず、この和結合したデータを配列に格納してtableB.品名の問い合わせをlikeで行いinner joinしたらどうかと考えました。

tebleBを設計し直したら良いのでしょうが事情があり今は弄れません。
宜しくお願いいたします。

補足日時:2006/07/05 22:22
    • good
    • 0

tableAとtableBをどうjoinしたいのか判りません。



tableAの抽出後でtableA.C=tableB.f?

>1)が含まれる文字列になるので上手く行きません。

↑の意味が判りません。

もう少し具体的にお願いします。
それからこの内容であればASPよりSQLServerのカテゴリの方が
良いと思います。

この回答への補足

このような質問にご対応下さり、ありがとうございます。

> tableAとtableBをどうjoinしたいのか判りません。
> tableA.C=tableB.f
>>1)が含まれる文字列になるので上手く行きません。
>↑の意味が判りません。

上の方の補足投稿でまとめさせて頂きました。

> それからこの内容であればASPよりSQLServerのカテゴリの方が
> 良いと思います。

ご指摘ありがとうございます。質問する際、迷ったのですがSQL文で全てまかなえないのではないかと思ったので、こちらで質問させて頂きました。

補足日時:2006/07/05 22:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!