Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用视图中的WHERE?_Sql_Database_Postgresql_View - Fatal编程技术网

Sql 如何使用视图中的WHERE?

Sql 如何使用视图中的WHERE?,sql,database,postgresql,view,Sql,Database,Postgresql,View,在数据库的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 c

在数据库的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\u no不存在,因为它是在col\u 5\u 0中选择的

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

SELECT * FROM myView WHERE id = ?

视图也是sql中的一个关键字。

以这种方式创建视图,并在where子句中使用视图引用

CREATE VIEW view_name 
AS
    SELECT column1, column2, ...
    FROM table_name
    WHERE condition;
还可以在视图创建期间过滤行

SELECT * 
FROM view_name 
WHERE view_name.col_name = ?

您已将列order\u no重命名为col\u 5\u 0\u。因此,您需要使用:

SELECT *
FROM myView v
WHERE v.col_5_0_ = ?;
也就是说,您只能引用视图返回的列

将列重命名为无意义的字符串似乎是一个非常糟糕的主意——至少在视图向人类公开的情况下是这样。我不清楚为什么会有人想混淆它们


另外,不要将视图用作表别名或任何其他标识符。这是一个SQL关键字,最好避免将其作为标识符。

SQL如何通过从视图中选择来知道所涉及的表?如果视图的列名为id,则只需写入。。。其中id=?或其中myView.id=?。从..中选择*。。其中col_5_0_=?显然,在视图的查询中没有列名称或别名作为order_no。我尝试了col_5_0=?但不是成功。请帮忙。thanksorder_no更名为col_5_0,而不是col_5_0。但这些别名毫无意义。您应该用可读的、可理解的列别名重新创建视图。我已经尝试过了。它表示column view.id不存在。请帮忙。谢谢。@Shazam你能在问题中粘贴整个视图定义吗?我已经粘贴了整个视图。请帮忙。谢谢。@Shazam现在就试试还是不行。我已经尝试了myView.order\u no,但不起作用。请帮忙。谢谢