简体   繁体   English

SQL LEFT JOIN 子查询别名

[英]SQL LEFT JOIN Subquery Alias

I'm running this SQL query:我正在运行这个 SQL 查询:

SELECT wp_woocommerce_order_items.order_id As No_Commande
FROM  wp_woocommerce_order_items
LEFT JOIN 
    (
        SELECT meta_value As Prenom
        FROM wp_postmeta
        WHERE meta_key = '_shipping_first_name'
    ) AS a
ON wp_woocommerce_order_items.order_id = a.post_id
WHERE  wp_woocommerce_order_items.order_id =2198

And I get this error:我得到这个错误:

#1054 - Unknown column 'a.post_id' in 'on clause'. #1054 - “on 子句”中的未知列“a.post_id”。

I think my code is pretty simple, but I can't make it right.我认为我的代码很简单,但我做不对。 What am I doing wrong?我究竟做错了什么?

You didn't select post_id in the subquery. 您没有在子查询中选择post_id You have to select it in the subquery like this: 您必须像下面这样在子查询中选择它:

SELECT wp_woocommerce_order_items.order_id As No_Commande
FROM  wp_woocommerce_order_items
LEFT JOIN 
    (
        SELECT meta_value As Prenom, post_id  -- <----- this
        FROM wp_postmeta
        WHERE meta_key = '_shipping_first_name'
    ) AS a
ON wp_woocommerce_order_items.order_id = a.post_id
WHERE  wp_woocommerce_order_items.order_id =2198 

I recognize that the answer works and has been accepted but there is a much cleaner way to write that query. 我知道答案是可行的,并且已经被接受,但是有一种更简洁的方式来编写该查询。 Tested on mysql and postgres. 在mysql和postgres上测试。

SELECT wpoi.order_id As No_Commande
FROM  wp_woocommerce_order_items AS wpoi
LEFT JOIN wp_postmeta AS wpp ON wpoi.order_id = wpp.post_id 
                            AND wpp.meta_key = '_shipping_first_name'
WHERE  wpoi.order_id =2198 

create database Joins_With_F_K创建数据库 Joins_With_F_K

use Joins_With_F_K使用 Joins_With_F_K

create table person( id int identity primary key not null, Name varchar(20), address varchar(20), contact int, city varchar(20), food_id int, )创建表人(id int 身份主键不为空,名称 varchar(20),地址 varchar(20),联系人 int,城市 varchar(20),food_id int,)

create table Order1 ( id int identity primary key not null, food varchar(20) not null, date varchar(20) not null, quantity int not null, flavour varchar(20) not null, amount int not null创建表 Order1 ( id int identity 主键不为空,食物 varchar(20) 不为空,日期 varchar(20) 不为空,数量 int 不为空,风味 varchar(20) 不为空,数量 int 不为空

                     )

alter table person add constraint person_fk foreign key (food_id) references order1(id)更改表人员添加约束 person_fk 外键 (food_id) 引用 order1(id)

insert into person values ('marium','nazimabad',033513,'karachi',1), ('faiza','nazimabad',033513,'karachi',2), ('anabia','nazimabad',033513,'karachi',3), ('aqsa','nazimabad',033513,'karachi',4), ('savera','nazimabad',033513,'karachi',5), ('rubi','nazimabad',033513,'karachi',6), ('bisma','nazimabad',033513,'karachi',7) insert into person values ('sami khan ','nazimabad',033513,'karachi',8)插入个人值 ('marium','nazimabad',033513,'karachi',1), ('faiza','nazimabad',033513,'karachi',2), ('anabia','nazimabad',033513 ,'karachi',3), ('aqsa','nazimabad',033513,'karachi',4), ('savera','nazimabad',033513,'karachi',5), ('rubi',' nazimabad',033513,'karachi',6), ('bisma','nazimabad',033513,'karachi',7) 插入个人值 ('sami khan ','nazimabad',033513,'karachi',8 )

insert into Order1 values('pizza','18\\01\\2022',1,'tikka',300), ('biryani','18\\01\\2022',1,'chicken tikka',200), ('juice','18\\01\\2022',1,'orange',150), ('burger','18\\01\\2022',1,'tikka',250), ('broast','18\\01\\2022',1,'chicken masala',300), ('pizza','18\\01\\2022',1,'fagita',300), ('pizza','18\\01\\2022',1,'malai boti',500)插入 Order1 值('pizza','18\\01\\2022',1,'tikka',300), ('biryani','18\\01\\2022',1,'chicken tikka',200), ( '果汁','18\\01\\2022',1,'橙子',150), ('汉堡','18\\01\\2022',1,'tikka',250), ('broast','18 \\01\\2022',1,'鸡肉咖喱',300), ('pizza','18\\01\\2022',1,'fagita',300), ('pizza','18\\01\\2022' ,1,'malai boti',500)

insert into Order1 values('Zinger Pizza','18\\01\\2022',2,'tikka',300)插入 Order1 值('Zinger Pizza','18\\01\\2022',2,'tikka',300)

select * from person select * from order1从人员中选择 * 从订单 1 中选择 *

select * ,quantity*amount as t_aomunt from person as a inner join order1 as b on a.food_id = b.从 person 中选择 * ,quantity*amount 作为 t_aomunt 作为内部连接订单 1 作为 a.food_id = b 上的 b。 id ID

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM