首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我正面临着左联的问题

我正面临着左联的问题
EN

Stack Overflow用户
提问于 2017-06-22 07:01:21
回答 2查看 51关注 0票数 2

查询1:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT b.id,
b.bid,
b.productname,
b.brandname, 
b.producttype, b.sku,
b.cat_id,
b.brandname,
b.costprice,
b.pweight,
b.monthly,
b.discountcodes, 
b.seller_id FROM `buyde_product` b 
where b.sku in ( SELECT buyde_new_new_sku.sku FROM buyde_new_new INNER JOIN buyde_new_new_sku ON buyde_new_new.cat_id = buyde_new_new_sku.cat_id)

最初,我编写了上面的查询,因为当时我只需要上面的详细信息,现在我想从buyde_brand表中再添加一个细节,所以我想使用左联接,然后使用下面的查询,但是在PHPMyAdmin中尝试时会出现一个错误。

有人能看到我的代码我哪里错了吗?

代码语言:javascript
代码运行次数:0
运行
复制
SELECT b.id,
    b.bid,
    b.productname,
    b.producttype, b.sku,
    b.cat_id,
    b.brandname,
    b.costprice,
    b.pweight,
    b.monthly,
    ba.brandname, 
    ba.bid,
    b.discountcodes, 
    b.seller_id FROM `buyde_product` b 
    where b.sku in ( SELECT buyde_new_new_sku.sku FROM buyde_new_new INNER 
JOIN buyde_new_new_sku ON buyde_new_new.cat_id = buyde_new_new_sku.cat_id)

LEFT JOIN `buyde_brand` ba 
ON b.bid = ba.bid

错误:在phpmyadmin中

#1064 -您的SQL语法有错误;请检查与您的MariaDB服务器版本相对应的手册,以便在第16行使用接近“左侧联接buyde_brand ba ON b.bid = ba.bid LIMIT 0,25”的语法。

更新:SELECT b.id, b.bid, b.productname, b.producttype, b.sku, b.cat_id, b.brandname, b.costprice, b.pweight, b.monthly, ba.brandname, ba.bid, b.discountcodes, b.seller_id FROMbuyde_productb LEFT JOINbuyde_brandba ON b.bid = ba.bid

如果运行上述查询时,请删除

where b.sku in ( SELECT buyde_new_new_sku.sku FROM buyde_new_new INNER JOIN buyde_new_new_sku ON buyde_new_new.cat_id = buyde_new_new_sku.cat_id)

这一部分,然后它运行,但我需要首先获取按照这个条件,然后想要添加出价从buyde_brand

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-22 07:06:24

在查询的条件(WHERE)之后设置LEFT JOIN。您必须在查询的表部分设置LEFT JOIN。见以下内容:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT 
    b.id,
    b.bid,
    b.productname,
    b.producttype, b.sku,
    b.cat_id,
    b.brandname,
    b.costprice,
    b.pweight,
    b.monthly,
    ba.brandname, 
    ba.bid,
    b.discountcodes, 
    b.seller_id 
FROM `buyde_product` b LEFT JOIN `buyde_brand` ba ON b.bid = ba.bid
WHERE b.sku IN (
    SELECT buyde_new_new_sku.sku 
    FROM buyde_new_new INNER JOIN buyde_new_new_sku ON buyde_new_new.cat_id = buyde_new_new_sku.cat_id
)

此查询还应适合您的新要求,首先筛选buyde_product表,然后在此筛选表上筛选LEFT JOIN。这个解决方案的结果应该是一样的。另一种解决方案是将原始查询放入子select和该子select上的LEFT JOIN中。

票数 0
EN

Stack Overflow用户

发布于 2017-06-22 07:10:12

您的SQL语法错误;正确的顺序是SELECT - FROM - JOIN - WHERE (- GROUP BY - ORDER BY)。在查询中,将LEFT JOIN放在WHERE子句之后,这是不正确的。你应该这样写:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT b.id,
    b.bid,
    b.productname,
    b.producttype, b.sku,
    b.cat_id,
    b.brandname,
    b.costprice,
    b.pweight,
    b.monthly,
    ba.brandname, 
    ba.bid,
    b.discountcodes, 
    b.seller_id
FROM `buyde_product` b 
LEFT JOIN `buyde_brand` ba 
ON b.bid = ba.bid
    where b.sku in ( SELECT buyde_new_new_sku.sku FROM buyde_new_new INNER 
JOIN buyde_new_new_sku ON buyde_new_new.cat_id = buyde_new_new_sku.cat_id)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44692313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档