如何在VIEW中使用WHERE?

问题描述 投票:0回答:1

在数据库的myView中,我有:

 SELECT orderhdr3_.id AS col_0_0_,
    gnrlorg2_.id AS col_1_0_,
    gnrlorg2_.name AS col_2_0_,
    gnrlcustom1_.id AS col_3_0_,
    gnrlcustom1_.name AS col_4_0_,
    orderhdr3_.order_no AS col_5_0_,
    orderhdr3_.cust_ref_no AS col_6_0_,
    tripinfo4_.job_no AS col_7_0_,
    orderhdr3_.order_type AS col_8_0_,
    servicetyp5_.code AS col_9_0_,
    tripinfo4_.service_provider_id AS col_10_0_,
    tripinfo4_.service_personnel AS col_11_0_,
    orderhdr3_.status AS col_12_0_,
    orderhdr3_.completed_date AS col_13_0_,
    orderhdr3_.reason_code AS col_14_0_,
    orderhdr3_.remarks AS col_15_0_,
    orderhdr3_.source_order_hdr_location_id AS col_16_0_,
    orderhdrlo7_.unit_no AS col_17_0_,
    orderhdrlo7_.name AS col_18_0_,
    orderhdrlo7_.address AS col_19_0_,
    orderhdrlo7_.postal_code AS col_20_0_,
    orderhdrlo7_.zone AS col_21_0_,
    orderhdrlo7_.contact AS col_22_0_,
    orderhdrlo7_.phone AS col_23_0_,
    orderhdrlo7_.email AS col_24_0_,
    orderhdrlo7_.op_date AS col_25_0_,
    orderhdrlo7_.instruction AS col_26_0_,
    orderhdr3_.dest_order_hdr_location_id AS col_27_0_,
    orderhdrlo6_.unit_no AS col_28_0_,
    orderhdrlo6_.name AS col_29_0_,
    orderhdrlo6_.address AS col_30_0_,
    orderhdrlo6_.postal_code AS col_31_0_,
    orderhdrlo6_.zone AS col_32_0_,
    orderhdrlo6_.contact AS col_33_0_,
    orderhdrlo6_.phone AS col_34_0_,
    orderhdrlo6_.email AS col_35_0_,
    orderhdrlo6_.op_date AS col_36_0_,
    orderhdrlo6_.instruction AS col_37_0_,
    orderdet11_.product_code AS col_39_0_,
    orderdet11_.product_desc AS col_40_0_,
    orderdet11_.order_qty AS col_41_0_,
    orderdet11_.serviced_qty AS col_42_0_,
    orderdet11_.reason_code AS col_43_0_,
    orderhdr3_.active_ind AS col_44_0_,
    tripinfo4_.active_ind AS col_45_0_,
    gnrlorg2_.active_ind AS col_46_0_,
    gnrlcustom1_.active_ind AS col_47_0_,
    commusersc0_.comm_user_id AS col_48_0_,
    orderhdr3_.org_id AS col_49_0_,
    orderhdr3_.customer_id AS col_50_0_,
    orderhdrlo6_.op_date AS col_51_0_,
    orderhdrlo6_.op_date AS col_52_0_,
    orderhdr3_.id AS col_53_0_,
    orderdet11_.order_hdr_id AS col_54_0_,
    orderhdrlo6_.op_date AS col_55_0_,
    tripinfo4_.job_no AS col_56_0_,
    orderhdr3_.seq AS col_57_0_,
    orderhdr3_.order_no AS col_58_0_
   FROM comm_users_customers commusersc0_
     JOIN gnrl_customer gnrlcustom1_ ON commusersc0_.gnrl_customer_id = gnrlcustom1_.id
     JOIN gnrl_org gnrlorg2_ ON gnrlcustom1_.gnrl_org_id = gnrlorg2_.id
     CROSS JOIN order_det orderdet11_
     JOIN order_hdr orderhdr3_ ON gnrlcustom1_.id = orderhdr3_.customer_id
     JOIN trip_info tripinfo4_ ON orderhdr3_.trip_info_id = tripinfo4_.id
     JOIN service_type servicetyp5_ ON orderhdr3_.service_type_id = servicetyp5_.id
     JOIN order_hdr_location orderhdrlo6_ ON orderhdr3_.dest_order_hdr_location_id = orderhdrlo6_.id
     JOIN order_hdr_location orderhdrlo7_ ON orderhdr3_.source_order_hdr_location_id = orderhdrlo7_.id
     JOIN order_hdr_location_time_windows timewindow8_ ON timewindow8_.order_hdr_location_id = orderhdr3_.dest_order_hdr_location_id
     JOIN order_hdr_location orderhdrlo9_ ON timewindow8_.order_hdr_location_id = orderhdrlo9_.id;

在我的代码中,我想使用WHERE进行过滤

SELECT * FROM myView view WHERE view.order_no = ?

但是Java / PostgreSQL给出了错误:

错误:列view.order_no不存在

请提供帮助,因为它涉及多个表和许多列,因此非常复杂。我不确定为什么view.order_no不存在,因为在col_5_0]中选择了它。

在数据库的myView中,我具有:SELECT id,名称,other_col,... from table1 JOIN table2 ON...。在我的代码中,我想使用WHERE SELECT * FROM myView视图进行过滤WHERE table1.id =?但...

sql postgresql view
1个回答
1
投票

您可以通过其名称引用视图:

© www.soinside.com 2019 - 2024. All rights reserved.