1

親/子テーブルがあります:

親テーブル:

ID | 説明

1 | アレクサンドラ 2 | ナタリア

子テーブル:

ID | id_parent | 説明

1 | 1 | プログラマー 2 | 1 | 手術 3 | 2 | プログラマー 4 | 2 | それ

設定したい「Programmer」を含むすべてのレコードを取得する場合のように、フィルターに従ってレコードのセットを返す方法:

応答表:

id_parent | id_child | 説明(子から)

1     |    1     |  Programmer
2     |    3     |  Programmer

ただし、フィルターが「プログラマー」と「手術」のように見える場合、クエリは次のみを返す必要があります。

応答表:

id_parent | id_child | 説明(子から)

1     |    1     |  Programmer
1     |    2     |  Surgery

ご覧のとおり、子テーブルの説明とコードを「接続」するために、何らかの「結合」も必要です。

前もって感謝します。

4

3 に答える 3

1
SELECT t.id_parent,
       t.id,
       t.description
  FROM CHILD t
  JOIN CHILD p ON p.id_parent = t.id_parent AND p.description = 'Programmer'
  JOIN CHILD s ON s.id_parent = t.id_parent AND s.description = 'Surgery'

SQL に基づいて、以下を使用する必要があります。

  SELECT p.ID, 
         c.ID, 
         c.ID_SpecMatrix 
    FROM Parent p
    JOIN Child c ON p.ID = c.ID_Parent AND c.ID_SpecMatrix = 4
    JOIN Child c2 ON p.ID = c2.ID_Parent AND c2.ID_SpecMatrix = 5
GROUP BY p.ID, 
         c.ID, 
         c.ID_SpecMatrix 

キーは、CHILD テーブルの追加のコピーを結合することです。ID_parentto ID はレコードをリンクします。CHILD テーブルをコピーする AND フィルターを使用してID_SpecMatrix、条件に一致する行のみを含めます。

クエリは動的 SQL を使用して、使用したい条件の数に拡張できるようにする必要があります。

于 2009-08-11T15:53:22.287 に答える
0

これはどう

SELECT * FROM Child
WHERE id_specmatrix IN (4,5) AND
      Parent_ID IN (SELECT DISTINCT parent.id FROM parent p
                    JOIN Child s1 ON s1.id_parent = p.id AND s1.id_specmatrix = 4
                    JOIN Child s2 ON s2.id_parent = p.id AND s2.id_specmatrix = 5)
于 2009-08-12T05:16:56.513 に答える
0

select * from parent p left join child c on p.id = c.id_parent where c.description = 'Programmer' または c.description = 'Surgen'

于 2009-08-11T07:08:33.487 に答える