
SELECT文で質問があります。
商品情報を格納したテーブルを作成し、「商品名を検索するとその商品番号を取得する」という単純なSELECTですがうまくいきません。
■tb_items → 商品情報を格納しています。
--------------------------------------------
商品番号 サイズ 重さ
001 50 120
002 30 200
--------------------------------------------
■tb_details → 店舗毎の情報を格納しています。
--------------------------------------------
商品番号 店舗番号 商品名 価格
001 shop_A シャープデジカメ 50000
001 shop_B シャープcamera 56000
002 shop_A パナソニックスマホ 85000
002 shop_B Panasonicスマホ 79000
--------------------------------------------
ここで、「商品名を検索するとその商品番号を取得できる」としたいのですが、例えば「シャープ」で検索すると商品番号001を取得できますが、「sharp」で検索すると当然ですが商品番号001は取得できません。
そこでタグのようなものを登録するテーブルをさらに作成しました。
■tb_tags
--------------------------------------------
タグ 商品番号
sharp 001
カメラ 001
スマートフォン 002
携帯 002
--------------------------------------------
試しに「sharp カメラ」を検索してみました。SELECT文は以下のようにしました。
--------------------------------------------
SELECT
tbI.`商品番号`
FROM
tb_items AS tbI
LEFT JOIN
tb_details AS tbD ON tbI.`商品番号` = tbD.`商品番号`
LEFT JOIN
tb_keywords AS tbK ON tbI.`商品番号` = tbK.`商品番号`
WHERE
(
((tbK.`タグ` = 'sharp') OR (tbK.`タグ` = 'カメラ')) OR
(
(tbD.`商品名` LIKE '%sharp%') AND (tbD.`商品名` LIKE '%カメラ%')
)
)
--------------------------------------------
取得した結果は、
001
001
というように同じ商品番号を重複して2つ取得してしまいます。
検索を「シャープ camera」にしても重複して2つ取得してしまいます。
やりたいことは、「検索文字列(空白区切りあり)で商品名とタグを検索してヒットした商品番号を重複なしに取得したい」です。
どのようなSELECT文にすれば良いのでしょうか?
お手数ですがアドバイスを頂けたらと思います。
どうぞよろしくお願い致します。
No.1ベストアンサー
- 回答日時:
詳しく検証していませんが、単にダブりを表示しないだけなら
SELECT DISTINCT カラム FROM テーブル
で十分かと
ありがとうございます!
実はDISTINCTは試していて、これを使うと取得数が0になってしまっていました。
しかしどうやら私のDISTINCTの使い方が間違っていて今DISTINCTを使って書き直したら重複する情報がうまく一つにまとまってくれました。
↓うまくできた書き方
SELECT
DISTINCT(tbI.`商品番号`) AS itemNo
FROM
…
↓間違った書き方
SELECT
DISTINCT(tbI.`商品番号` AS itemNo)
FROM
…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- 国産バイク 大型バイク カワサキz900rsに付ける ヨシムラのマフラーの質問です、 【 商 品 I D 】14 2 2023/06/27 13:43
- Excel(エクセル) エクセルの表について 3 2023/04/14 18:00
- Excel(エクセル) エクセルデーターの並び替え 5 2022/08/06 09:59
- ヤフオク! ヤフオク 2 2023/01/27 11:36
- Amazon Amazonで注文した商品をローソンで受け取りにしているのですがコロナにかかってしまい取りにいけなく 4 2022/08/22 10:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【SQL2000】アクセスログからレ...
-
SELECT文で重複せずに取得する...
-
アクセス 教えてください。 超...
-
テーブル定義の常識
-
〜のような結果を出すためのSQL...
-
Accessでのレコード存在チェック
-
SQLの重複選択について
-
DynamicSQL
-
末尾に空白を含む項目の扱い
-
助けてください!iPod touchの...
-
SQL・・・分かりません。
-
ビット演算
-
文字列を連結した後に1つの変...
-
ACCESS2000 SQL 最大レコード数
-
Access97 VBAにてレコードの検索
-
[初心者]A表の2つの値からB表...
-
最大値の取得
-
access 手順について教えて欲しい
-
PHP+MySQLで同じIDの備考項目を
-
セル内の同じデーターを抽出したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessで別テーブルの値をフォ...
-
最新の日付とその金額をクエリ...
-
アクセスで「空き番」の確認
-
access 自動採番 年が変わる...
-
[Access]異なるレコード間の文...
-
vba 直前の操作はキャンセルさ...
-
【アクセスVBA】テーブルにフィ...
-
Accessでのレコード存在チェック
-
条件をつけて日付の古い行を抜...
-
Accessで日付が変わると番号が...
-
access 自動採番 「10-AA-000...
-
MS Accessで行指定検索の方法
-
Recordset.FindFirstについて
-
サイベースには、オラクルのROW...
-
アクセスで挿入時のVALUES以下...
-
Access:抽出して、色をつけたい。
-
初歩的な表の変換をしたい
-
【SQL】existsでの商演算
-
Access 文字+年ごとの自動採番
-
候補キーの求め方
おすすめ情報