oracle 在SQL查询中编写条件时面临的问题[已关闭]

ewm0tg9j  于 2023-11-17  发布在  Oracle
关注(0)|答案(1)|浏览(168)

已关闭。此问题需要details or clarity。目前不接受回答。
**要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

20天前关闭。
Improve this question
我需要根据优先级优先级(b.优先级)获取记录。如果优先级1可用,则获取相应的行。如果优先级1没有记录,则转到下一个优先级。如何在SQL中编写条件。下面是我为优先级1编写的查询。请在此方面提供帮助

SELECT 
    b.precedence, b.template_code, a.CLASS, a.seat_number, 
    int_row_pos, int_column_pos, deck_name, control_attribute
FROM 
    sat_seat_number_tmp a, sat_ssr_seat b
WHERE
    a.bd_airport_code = 'GNR'
    AND a.off_airport_code = 'TMP'
    AND a.child_bd_airport_code = 'GNR'
    AND a.child_off_airport_code = 'TMP'
    AND a.CLASS = 'ECONOMY'
    AND a.seat_number MEMBER OF getSeats(
                               v_seatRange => '3A'
                             )
    AND (b.precedence = 1 AND b.SEG_CONNECTION = 'Y')

字符串

sat_ssr_seat表

[在此输入图像描述][1]
对于优先级,没有记录存在考虑使用优先级2
优先级1的当前结果为[在此处输入图像描述][2]
如果没有记录存在的优先级1然后检查是否有任何记录的优先级2.这一个我怎么能添加到查询

erhoui1w

erhoui1w1#

这种“优先”从何而来?
我是这样理解这个问题的:

  • 正确连接这两个表;如注解所示,它们在查询中看起来像交叉连接
  • 如果优先级被认为是特定some_id_column的 * 最低 *(或者其他值;不能说),那么一个明显而简单的选择是使用子查询来获取它。可能还有其他更好的选择,但是-正如我所说的-这就是我如何理解它并发布一些 * 可能 * 在正确轨道上的东西
SELECT 
    b.precedence, b.template_code, a.CLASS, a.seat_number, 
    int_row_pos, int_column_pos, deck_name, control_attribute
FROM 
    sat_seat_number_tmp a join sat_ssr_seat b on a.some_id_column = b.some_id_column
WHERE   a.bd_airport_code = 'GNR'
    AND a.off_airport_code = 'TMP'
    AND a.child_bd_airport_code = 'GNR'
    AND a.child_off_airport_code = 'TMP'
    AND a.CLASS = 'ECONOMY'
    AND a.seat_number MEMBER OF getSeats(
                               v_seatRange => '3A'
                             )
    AND b.SEG_CONNECTION = 'Y'
    AND b.precedence = (select min(x.precedence)
                        from sat_ssr_seat x
                        where x.some_id_column = b.some_id_column
                       )

字符串

相关问题