03-30 13:17]如何使用子列中的列值在哪裏子句
我試圖使用t-sql與asp-3.0的SQL Server 2005。我想要做的是首先選擇符合一定的條件,然後我想知道有多少孩子被連接到該行基於它的childID的所有行。
這當然可以通過對數據庫一進行兩個查詢來獲得父對象的匹配行以及發現知道有多少個子對象具有父對象的每行的一個查詢。
我有兩個表,table1包含父母和孩子,table2包含信息,這裏的id是ofcourse在table1中保存在父母和孩子中的id。
現在我想先找到所有的孩子一定父,並在同一個SQL語句,我想知道有多少孩子被連接到每個孩子。
因此,家長807有兩個孩子,808和809. 808有5個孩子,809有72個孩子,我怎麼能用一個語句同時獲得孩子808和809的信息以及與他們每個孩子相關的孩子的數量。
我的SQL看起來像這樣(得到孩子家長807)
SELECT Parent, Child, ID, FieldX, FieldY
FROM Tabel1 INNER JOIN Tabel2 ON Parent = ID
WHERE (Parent = 807)
我用讓孩子的連接f.ex.的NUMER聲明808如下。
SELECT COUNT(*) AS AntalPoster FROM Tabel1 INNER JOIN Tabel2 ON Child = ID
WHERE (Parent = 808)
我想要做的是下面的,但我想每個記錄讓我對孩子又名SearchID值來替代值808。
SELECT Parent, Child AS SearchID, ID, FieldX, FieldY,
(SELECT COUNT(*) AS [Antal sidor]
FROM Tabel1 INNER JOIN Tabel2 ON Child = ID
WHERE (Parent = 808)) AS AntalPoster
FROM Tabel1 INNER JOIN Tabel2 ON Child = ID WHERE (Parent = 807)
我得到的問題是「無效的列名稱SearchID'」,有什麼我可以理解的是,我不能讓我在SerachID發現用作在下一步的SQL值的值 - 語句where子句。
這是可能的,如果是的話怎麼辦?
在此先感謝。
我認爲你需要發佈你的表的結構。真的很難理解父母是什麼以及'ChildID','ID','Child','Parent'和'ParentID'屬於什麼以及它們之間的關係。 – 2011-03-30 11:34:17
首先重寫你的選擇,在內部和外部選擇和字段中使用(不同的)別名 - maks查詢的可讀性很強,可能你會看到,你如何完成你的任務(提示:where inner.parent = outer.child )。 – Arvo 2011-03-30 11:36:00