親と子の両方を含むテーブルがあります。私の質問は、その親をつかむSQL文を形成する方法や子供があるされ、両親親と子が両方とも同じテーブルにある子を取得するためにSQLを使用する
Select * from inventory where subID=parentID
を通じて
Select * FROM inventory WHERE subID=0 // parents
ループ:今、私はテーブルに別のコールを行うことができますそれに属しています。
//SQL Results would look like this
Parent
- Child
- Child
Parent
- Child
- Child
- Child
etc..
本当にありがとうございます!
**更新** これが何であるかはわかりましたが、これは私の試みですが、これは結果を返しません。 id = 0は、それが親であることを示します。何が間違っているのですか?私はそれが今で考え出したと思う
:
;WITH cte AS (
SELECT DISTINCT id, parent_id, dateOn, capacity, status, instructorID, rowNum = ROW_NUMBER() OVER (ORDER BY id ASC)
FROM inventory
WHERE parent_id = 0 AND active='True' AND cID=1
UNION ALL
SELECT a.id, a.parent_id, a.dateOn, a.capacity, a.status, a.instructorID, b.rowNum
FROM inventory a
JOIN cte b ON a.parent_id = b.id
WHERE a.parent_id <> 0 AND active='True' AND cID=1
)
SELECT id, parent_id, dateOn, capacity, status, (SELECT count(aID) FROM appointments WHERE id=cte.id) as totalCount
FROM cte
ORDER BY rowNum, id
これは隣接リストと呼ばれます。これは、このようなデータを格納する非常に一般的な方法です。あなたが望むことをするテクニックは、再帰的なcteと呼ばれます。文字通りこのサイトとインターネットの残りの部分でこれを行う方法の数千、数千、数千の例があります。 –
は応答を感謝します。私は周りを見て、私が見つけることができるかを見てみましょう:) – Damien
あなたが検索する単語を知らないときには、時折、自分自身で答えを見つけるのは難しいです。 –