我的数据库包含表格 GridData , FormList 和 FormData 。
我需要从 FormData 表中提取一个名为 Value 的字段,但无法弄清楚如何构建查询。我可以逐个运行它,它会给我结果,但需要将它们一起包含在表输出中。
当我逐步运行查询时,查询是:
从 GridData 中选择*,其中GridName ='uwg' - 返回:
FormId GridName Example Field
1244135 uwg 9
1244135 uwg 10
1244135 uwg 11
1244135 uwg 7
1244135 uwg 66
使用 FormID 字段,我查找 FormList 表
从 FormList 中选择*,其中FormID = 1244135 - 返回:
JobId FormName FormId
1241899 ExampleForm 1244135
然后从上面查询其中FormID = JobID的SAME FormList 表。
从 FormList 中选择*,其中FormID = 1241899 - 返回:
JobId FormName FormId
1241894 ExampleForm2 1241899
AGAIN .. 查询上面的FormID = JobID的SAME FormList 表格。
从 FormList 中选择*,其中FormID = 1241894 - 返回:
JobId FormName FormId
1241893 ExampleForm3 1241894
此结果中的JobID是我需要在 FormData 表中引用的ID,以返回我需要的值...
从 FormData 中选择值,其中FormID = 1241893,而Name ='ProductName' - 返回:
Value
12345
我的目标是能够从 GridData 表中返回所有值,并在 FormData “值”字段中输入相应的条目。
我真的在努力学习如何编写这个查询!
我尝试过以下操作,但它会返回多个重复的条目。 值字段包含多种数据类型,我只对此表中的值感兴趣,其中 FormData.Name ='ProductName'
SELECT Value,
RecordId,
GridData.FormId,
GridName,
ExampleField
FROM GridData
JOIN FormData
ON GridData.FormId = FormData.FormID
WHERE GridData.FormId IN
(SELECT FormList.FormId FROM FormList WHERE FormList.FormId IN
(SELECT FormList.FormId FROM FormList WHERE FormList.FormId IN
(SELECT FormList.FormId FROM FormList WHERE FormList.FormId IN
(SELECT FormData.FormID FROM FormData))))
AND FormData.DataItemName = 'JobProductName'
答案 0 :(得分:1)
"INSERT INTO tbl_order (total_price, credit_card_number, fname, email, address, phone, city)
VALUES ('$cTotal', '$cNumber', '$cName', '$cEmail', '$cAdress', '$cPhone', '$cCity')"
答案 1 :(得分:0)
SELECT GD.*
,FD.value
FROM GridData GD
LEFT JOIN FormList FL
ON GD.FormID = FL.FormID
LEFT JOIN FormList FL1
ON FL.JobID = FL1.FormID
LEFT JOIN FormData FD
ON FL1,JobID = FD.FormID
WHERE GD.GridName = 'uwg'
AND FormData.DataItemName = 'JobProductName'
答案 2 :(得分:0)
您可以尝试逐级运行以下查询吗?
第一级仅 GridData (第14-16行),下一级是(11-17),然后重复直至顶部。这样一来,如果出现问题,您可以在 时检查。无论是那个还是你达到顶级无问题:)
也许它可以被更好地重写,但是现在让我们至少得到一个可行的版本。
SELECT [Value] -- 12345
FROM FormData
WHERE [Name] = 'ProductName'
AND FormID IN (
SELECT JobId -- 1241893
FROM FormList
WHERE FormID IN (
SELECT JobId -- 1241894
FROM FormList
WHERE FormID IN (
SELECT JobId -- 1241899
FROM FormList
WHERE FormID IN (
SELECT FormId -- 1244135
FROM GridData
WHERE GridName = 'uwg'
)
)
)
)
答案 3 :(得分:0)
我设法提取数据的查询是:
Select FD.Value, G.*
FROM GridData G
JOIN FormList FL1 ON FL1.FormID = G.FormID
JOIN FormList FL2 ON FL1.JobID = FL2.FormID
JOIN FormList FL3 ON FL2.JobId = FL3.FormID
JOIN FormData FD ON FL3.JobId = FD.FormID
WHERE FD.DataItemName = 'ProductNameHere' and G.GridName = 'GridNameHere'
以下帖子有助于得出这个结论 - 谢谢大家。