Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/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 与2个临时表联接_Sql_Postgresql - Fatal编程技术网

Sql 与2个临时表联接

Sql 与2个临时表联接,sql,postgresql,Sql,Postgresql,如何在下面的查询中再创建一个临时表,以便与相同的表联接 WITH financial_move_out_due_days AS ( SELECT property_id, management_company_id, value FROM property_preferences WHERE property_id IN ( 112,332 ) AND management_company_id = 23 ) S

如何在下面的查询中再创建一个临时表,以便与相同的表联接

WITH financial_move_out_due_days AS ( 
    SELECT property_id, 
        management_company_id, 
        value 
    FROM property_preferences 
    WHERE property_id IN ( 112,332 ) AND management_company_id = 23 
    )
    SELECT 
        l.id,
        l.primary_customer_id,
        ( c.name_first || c.name_last ) AS customer_name_full,
        c.email_address AS customer_email_address,
        c.phone_number AS phone_number
    FROM leases l
    JOIN customers c ON ( c.management_company_id = l.management_company_id AND c.id = l.primary_customer_id )
    JOIN financial_move_out_due_days fmpodd ON ( fmpodd.management_company_id = l.management_company_id AND fmpodd.property_id = l.property_id )
    WHERE
        l.management_company_id = 23
        AND l.property_unit_id IS NOT NULL
        AND l.unit_space_id IS NOT NULL';
试着这样做:

   WITH financial_move_out_due_days AS 
    ( 
        SELECT property_id, 
            management_company_id, 
            value 
        FROM property_preferences 
        WHERE property_id IN ( 112,332 ) AND management_company_id = 23 
    ),
    another_financial_move_out_due_days AS 
    ( 
        SELECT property_id, 
            management_company_id, 
            value 
        FROM property_preferences 
        WHERE property_id IN ( 112,332 ) AND management_company_id = 23 
    )
    SELECT 
        l.id,
        l.primary_customer_id,
        ( c.name_first || c.name_last ) AS customer_name_full,
        c.email_address AS customer_email_address,
        c.phone_number AS phone_number
    FROM leases l
    JOIN customers c ON ( c.management_company_id = l.management_company_id AND c.id = l.primary_customer_id )
    JOIN financial_move_out_due_days fmpodd ON ( fmpodd.management_company_id = l.management_company_id AND fmpodd.property_id = l.property_id )
    JOIN another_financial_move_out_due_days fmpodd ON ( fmpodd.management_company_id = l.management_company_id AND fmpodd.property_id = l.property_id )
    WHERE
        l.management_company_id = 23
        AND l.property_unit_id IS NOT NULL
        AND l.unit_space_id IS NOT NULL';
试着这样做:

   WITH financial_move_out_due_days AS 
    ( 
        SELECT property_id, 
            management_company_id, 
            value 
        FROM property_preferences 
        WHERE property_id IN ( 112,332 ) AND management_company_id = 23 
    ),
    another_financial_move_out_due_days AS 
    ( 
        SELECT property_id, 
            management_company_id, 
            value 
        FROM property_preferences 
        WHERE property_id IN ( 112,332 ) AND management_company_id = 23 
    )
    SELECT 
        l.id,
        l.primary_customer_id,
        ( c.name_first || c.name_last ) AS customer_name_full,
        c.email_address AS customer_email_address,
        c.phone_number AS phone_number
    FROM leases l
    JOIN customers c ON ( c.management_company_id = l.management_company_id AND c.id = l.primary_customer_id )
    JOIN financial_move_out_due_days fmpodd ON ( fmpodd.management_company_id = l.management_company_id AND fmpodd.property_id = l.property_id )
    JOIN another_financial_move_out_due_days fmpodd ON ( fmpodd.management_company_id = l.management_company_id AND fmpodd.property_id = l.property_id )
    WHERE
        l.management_company_id = 23
        AND l.property_unit_id IS NOT NULL
        AND l.unit_space_id IS NOT NULL';

我相信你的意思可能是CTE,而不是临时桌子。CTE更像是一个视图,而不是一个临时表,老实说,它通常是不必要的,但只是语法上的糖分——它更容易阅读,但它通常不会做任何你可以用更复杂的sql做的事情——只是将复杂的sql分解成碎片@realnumber3012已经回答了您的问题。如果你需要更多的细节,请告诉他或我。我不知道CTE,因为我是PGSQL新手。要使用相同的
连接,只需使用一个CTE两次即可。请澄清您的问题。我从@realmumber3012和ramesh获得了解决方案。我相信您的意思可能是CTE,而不是临时表。CTE更像是一个视图,而不是一个临时表,老实说,它通常是不必要的,但只是语法上的糖分——它更容易阅读,但它通常不会做任何你可以用更复杂的sql做的事情——只是将复杂的sql分解成碎片@realnumber3012已经回答了您的问题。如果你需要更多的细节,请告诉他或我。我不知道CTE,因为我是PGSQL新手。要使用相同的
连接,只需使用一个CTE两次即可。请澄清你的问题。我从@realnumber3012和ramesh那里得到了答案。