我有我的MySQL数据库的一些表:MySQL查询 - 从两个记录中选择设置
实验室检查(dw_test):
testID int
testText varchar
testGroup int
testOrder int
testActive int
testCalc int
...
测试组(dw_group):
groupID int
groupText varchar
groupOrder int
...
提交给实验室的测试列表(dw_sub):
subID int
subTest int
subForm int
subSpec int
...
如何选择测试:要么出现在dw_sub中,要么出现testCalc为1的测试?无论哪种情况,testActive必须为1,subSpec = 100。
该查询选择我想要的东西,但留下的是有testCalc = 1的所有测试:
SELECT dw_test.testID, dw_group.groupText, dw_test.testText
FROM (dw_test LEFT JOIN dw_group ON dw_test.testGroup = dw_group.groupID) RIGHT JOIN dw_sub ON dw_test.testID = dw_sub.subTest
WHERE ((dw_test.testActive=1) AND (dw_sub.subSpec=100) AND (dw_test.testSite=4))
GROUP BY dw_group.groupID, dw_test.testID
ORDER BY dw_group.groupOrder, dw_test.testOrder
所以我已经更新到包括另一个记录,但引起我的悲伤:
SELECT dw_group.groupText, dw_test.testID, dw_test.testText, dw_test.testCalc
FROM (SELECT * FROM dw_test WHERE testCalc = 1) dw_group RIGHT JOIN (dw_test RIGHT JOIN dw_sub ON dw_test.testID = dw_sub.subTest) ON dw_group.groupID = dw_test.testGroup
WHERE testActive=1 AND subSpec=100 AND testSite=4
GROUP BY testID
ORDER BY groupOrder, testOrder
我得到:未知列“dw_group.groupText”在“字段列表”
执行一个查询,该查询与'dw_sub'(另一个测试'testCalc = 1'的查询)并将它们与'UNION'结合起来。 – Barmar
“在任何一种情况下,testActive必须为1,subSpec = 100”如果只有第二个条件在下列情况下才会出现“dw_sub或testCalc为1”的情况,这怎么可能? – DarkKnight