2016-07-03 6 views
0

Hello Gurus。ワイルドカードによる2つのテーブルの照会

 SELECT 

     Hardlines_PTI.PTI, 
     Hardlines_PTI.[Product Line] as Product_Line, 
     TT_Data.CASE_ID as TT_ID, 
     TT_Data.STATUS as TT_Status 

     FROM Hardlines_PTI CROSS JOIN TT_Data 

     WHERE 

     TT_Data.SHORT_DESCRIPTION LIKE '%' +Hardlines_PTI.PTI+ '%' 

     ORDER BY Hardlines_PTI.PTI 

これは現在使用しており、出力が得られていないクエリです。

TT_Data.Short_Description列にPTIが存在するかどうかを判断するために、PTIをワイルドカードとして使用して、TT_DataテーブルからPTIのリストを取得しようとしています。

ここで間違っていることを教えてください。 ありがとうございました!

SELECT p.PTI, p.[Product Line] as Product_Line, p.CASE_ID as TT_ID, 
     d.STATUS as TT_Status 
FROM Hardlines_PTI p JOIN 
    TT_Data d 
    ON d.SHORT_DESCRIPTION LIKE '%' + p.PTI + '%' 
ORDER BY p.PTI; 

しかし、これはあなたのクエリと同じ出力を生成する必要があります

+0

を[悪い習慣をキックする:使用して古いスタイルなJOIN](のhttp:// sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx) - 古いスタイル*カンマで区切られたテーブル*スタイルのリストが置き換えられましたANSI - ** 92 ** SQL標準(** 20年以上前**)で*適切な* ANSI 'JOIN'構文を使用して、その使用は推奨されません –

+0

@marc_s私がコンマ区切りのリストを使用した理由テーブルは私がそれに参加するために何も共通していないからですon。 –

+0

次に、あなたは 'CROSS JOIN'を使用する必要があります..... –

答えて

1

私はこのようなクエリを記述します。何もない場合、いくつかの可能性があります:

  • 一致するものはありません。
  • 1つまたは複数の列に「隠した」または「同義の」文字があります。これは文字セットに依存します。
  • あなたはあなただけlower()で両面をラップすることができ、その場合には、大文字と小文字を区別照合、持っている:

    ON LOWER(d.SHORT_DESCRIPTION) LIKE '%' + LOWER(p.PTI) + '%' 
    
+0

私のクエリでONを使用しなかった理由は、両方のテーブルには何もありません一般。私はあなたのクエリを実行し、何もまだ実行していない:S –

+0

@ GopinathSekar。 。 。彼らは共通のものを持っています、平等条件ではありません。おそらく、パフォーマンスに焦点を当てた別の質問をする必要があります。 –

関連する問題