2016-11-03 10 views
3

私は現在、バタリングシステムのようなシステムを実行中です。このような状況。顧客(ジャスミン)は 'NAME'属性(彼女が求めるもの)を入力し、'SEEK '属性(彼女が求める必要があるもの)を入力する必要があります。結果を得るには、 'SEEK'属性は他の顧客の 'Name'属性と一致しなければならず、他の顧客の 'SEEK'属性はJasmineの 'HAVE'属性と一致する必要があります。例えば一致する属性を見つけるためのsqlクエリ

iは、(既にデータベース内の)テーブル項目たとえば

|ITEMSID|NAME |SEEK  |USERID| 
|A01 |printer|laptop |A1 | 
|A45 |laptop |headphone|A2 | 
|AY3 |laptop |headphone|A3 | 

ジャスミンは、「名前」属性ヘッドフォンを有し、「シーク」ラップトップ属性、結果はこれを好むべきであるを有します。その結果、すべての可能性(それが複数の行が依存から構成することができ、それはインクルードは「NAME」betwen一致しない場合、ゼロ結果を取得し、属性

|ITEMSID|NAME |SEEK  |USERID| 
|AY3 |laptop |headphone|A3 | 
|A45 |laptop |headphone|A2 | 

を「SEEK」ことをリストする必要があります私を助けてくれてありがとう。私は、JSP P/Sを使用して開発されていますシステム:。私はstackoverflowの中に新しいユーザーだ

コメントに基づいてEDIT:

私はすでにinner joinを使用してみましたが、クエリの結果が固有ではありません( 'Have'と 'Seek'属性の結果が一致することを意味しますが、すべての一致する行と一致しない私は)私があなたの要求を正しく(わからない理解していれば

SELECT a.NAME, a.seek,a.ITEMSID 
FROM items a 
JOIN items b ON a.NAME = b.seek AND b.NAME = a.seek 
+2

これについてのクエリを作成しようとしましたか?これまでに何を試しましたか?何が悪かったのか? – Galz

+0

私は既に内部結合を使用しようとしていますが、クエリの結果は1つのトランザクションに固有のものではありません( 'Have'と 'Seek'属性の結果が一致したことを意味します) ) – FYP

+0

SELECT a.NAMEは、 a.seekは、 はa.NAME = b.seek AND b.NAME = a.seek – FYP

答えて

1

あなたがしようとしたクエリに基づいて、あなたが不足しているすべてのためのWHERE句です。)入力されていることを「持っている」属性を選択してくださいトン入力。

SELECT a.name, a.seek, a.ITEMSID 
FROM items a 
JOIN items b 
    ON a.name = b.seek 
    AND b.name = a.seek 
WHERE a.name = 'input here' 
+0

TQ ON bのアイテムをJOIN項目FROM をa.ITEMSID私はすでにこのクエリを試していますが、結果はそれを得るために私が目標としているものではありません。クエリは、最初の顧客が入力したものを表示します(特定の例では、Jasmine 'name'および 'seek'属性 – FYP

+0

@FYP - 'Name'はジャスミンです)。サンプルデータ名に 'headphones'必要なサンプル出力が表示されます。 – Galz

関連する問題