0

ここで誰かが答えることができれば、事前に感謝します。私はこの2つのテーブルを持っています:

      Strings                Numbers
 ----------------        ----------------
| ID  |  String  |      | ID  |  Number  |
 ----------------        ----------------
|  1  |    'A'   |      |  1  | 'First'  |
|  1  |    10    |      |  2  | 'Second' |
 ----------------       |  3  | 'Third'  |
|  2  |    'B'   |      |  4  | 'Fourth' |
|  2  |    11    |      |  5  | 'Fifth'  |
 ----------------        ----------------
|  3  |    'A'   |
|  3  |    12    |
 ----------------
|  4  |    'B'   |
|  4  |    13    |
 ----------------
|  5  |    'B'   |
|  5  |    14    |
 ----------------

たとえば、「A」に「関連付けられた」値をフィルタリングすると、次のようなテーブルを取得する必要があります。

     Strings
 ----------------
| ID  |  String  |
 ---------------- 
|  1  |    10    |
 ---------------- 
|  3  |    12    |
 ----------------

たとえば、「B」に「関連付けられた」値をフィルタリングしたい場合は、次のようなテーブルを取得する必要があります。

      Strings
 ----------------
| ID  |  String  |
 ---------------- 
|  2  |    11    |
 ----------------
|  4  |    13    |
 ----------------
|  5  |    14    |
 ----------------

繰り返しますが、私を助けていただければ幸いです。

4

3 に答える 3

2

あなたが使う何かが欠けていない限り:

select s1.id, s1.string
from strings s1
inner join strings s2
    on s1.id = s2.id
    and s1.string != 'A'
    and s2.string = 'A'

デモで SQL Fiddle を参照してください

または

select s1.id, s1.string
from strings s1
inner join strings s2
    on s1.id = s2.id
    and s1.string != 'B'
    and s2.string = 'B'

デモで SQL Fiddle を参照してください

于 2012-08-15T22:18:13.707 に答える
0
SELECT * FROM Strings WHERE string = "A"

必要に応じて * をフィールド名に置き換えます。

于 2012-08-15T22:16:20.733 に答える
0
select s2.ID,
       s2.String
  from Strings as s1
 inner join Strings as s2
    on s2.id = s1.id
   and s2.String != s1.String
 where s1.String = ?

ただし、このテーブル構造には疑問があります。ID は主キーであるように見えますが、複数の値があるため、主キーにすることはできません。また、数値テーブルは必要ないのに、なぜ質問に含めるのですか? :)

于 2012-08-15T22:39:39.760 に答える