我正在使用SQL连接两个表。我正在加入一张载有包机信息的表格和一张载有指定人员的表格。在我的结果中,我只想显示船员表中只有“Pilot”值的行,而不是“Copilot”或两者。SQL JOIN将结果限制为不存在特定值的行
回答
你应该真的帮助我们在这里为我们提供一个体面的查询模式。我认为这里最重要的是你如何确定谁是飞行员和/或副驾驶员,以及你如何将每个人与飞行联系起来。
我觉得这样的事情可能会有所帮助:
SELECT * FROM Charter C
INNER JOIN Crew ON (Charter.CHAR_TRIP = Crew.CHAR_TRIP)
WHERE Crew.Crew_Job = 'PILOT' AND (SELECT COUNT(*) FROM Charter
INNER JOIN Crew ON (Charter.CHAR_TRIP = Crew.CHAR_TRIP)
WHERE Crew.Crew_Job = 'CoPilot'
AND Charter.Chart_Trip = C.ChartTrip) = 0
虽然这可能不是干净的解决方案..它应该做的工作。
我添加了相关表的ERD。 CREW_JOB将包含“Pilot”或“Copilot”。我会加入他们CHAR_TRIP这将是唯一的旅行ID。 – 2011-03-02 04:06:28
SELECT * FROM TABLE_A JOIN TABLE_B ON (TABLE_A.Value = TABLE_B.Value) WHERE TABLE_A.OtherValue = 'Pilot'
这是从我的头顶,所以一些语法可能会关闭。主要观点是WHERE
条款。您可以在列中指定要查找的值(如果您正在寻找Pilot
)。
编辑:为了防止一个值,你可以做一些像WHERE TABLE.VALUE != 'Copilot'
!=
可能需要写为<>
取决于它是什么SQL。编辑2:我的SQL服务器投掷hissy,而不是连接,所以这也是完全关闭我的头顶,我认为这是一个黑客工作,但我认为它会做的工作。 :)
SELECT [CHARTER].*, COUNT(*) as Tally FROM [CHARTER] JOIN [CREW] ON ([CHARTER].[CHAR_TRIP] = [CREW].[CHAR_TRIP]) WHERE [CREW].[CREW_JOB] = 'PILOT' OR [CREW].[CREW_JOB] = 'COPILOT' GROUP BY [CHARTER].* HAVING Tally = 1
这假设所有航班都有飞行员,但并非所有航班都有副驾驶员。要获得所需的确切显示,您可能必须将其用作子查询(以删除Tally
列)。
是的,但我不仅想将结果限制为值为“Pilot”的行。例如,如果我有一个Pilot和一个CoPilot用于特定的特许身份证,我只想要那些只有飞行员而不是副驾驶员,或者驾驶员和副驾驶的人员。 – 2011-03-02 03:57:22
SELECT *
FROM charter ch
JOIN crew cr ON ch.char_trip = cr.char_trip
WHERE NOT EXISTS(SELECT *
FROM crew cr2
WHERE cr2.char_trip = ch.char_trip
AND cr2.crew_job != 'PILOT')
我认为应该这样做。第3行中的船员表的连接是可选的,并且只有当您需要该表格的结果时才可以。不存在反联接是评估所有机组人员进行特定行程并检查任何不是飞行员的信息。
- 1. 如何将MySQL查询结果限制为特定结果?
- 2. SQL选择将结果限制为特定列中每个id值的X
- 3. 将日志数据限制为仅限特定结果
- 4. 将varchar()列限制为特定值?
- 5. 在GROUP_CONCAT()或INNER JOIN上限制结果
- 6. 如何将结果集限制为JOIN中的最新实例
- 7. 限制SQL JOIN
- 8. SQL查询,每个特定列限制为1个结果
- 9. 如何将LEFT JOIN限制为SQL Server中的第一个结果?
- 10. 限制SQL结果
- 11. SQL - 限制结果
- 12. SQL INNER JOIN不给结果
- 13. 将属性限制为特定值
- 14. 当特定值不存在时在mysql结果中添加行
- 15. 嵌套选择。需要将结果限制为每个特定列的值
- 16. PHP/SQL - 在特定页面中限制结果数量
- 17. 限制SQL的结果数
- 18. SQL数限制的结果
- 19. 限制后的SQL结果
- 20. 如何将结果限制为不同的结果?
- 21. DB2 - SQL-将结果限制在特定列中只有少数几次出现
- 22. 如何将LEFT JOIN限制为一个结果并返回结果集中的最低值?
- 23. SQL - 限制一行匹配结果
- 24. 如何限制每个特定组结果的SQLite结果?
- 25. 限制的查询结果的特定行
- 26. 排除特定列中的多个结果(SQL JOIN)
- 27. 限制LEFT JOIN结果为1,灵活的where子句
- 28. SQL查询 - 限制结果
- 29. SQL受结果限制
- 30. 在弹簧数据的MongoDB,我不能指定限制值来限制结果
请张贴您的餐桌结构,以便我可以更清楚地说明这一点。 – 2011-03-02 03:54:07
Try @ Nija的帖子。你可以添加你的表结构..你需要内部连接ID的和过滤使用where @ Table = value。 – Crimsonland 2011-03-02 03:57:11
我加了相关的ERD。 – 2011-03-02 03:58:06