首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >执行完全外连接时出错

执行完全外连接时出错
EN

Stack Overflow用户
提问于 2017-05-27 01:25:00
回答 1查看 71关注 0票数 1

product表:

代码语言:javascript
运行
复制
╔══════════════════════════════════╦═══════════╦═══════════════════╦════════════════════╦════╗
║               ref                ║    mfr    ║       pnum        ║        ssku        ║ id ║
╠══════════════════════════════════╬═══════════╬═══════════════════╬════════════════════╬════╣
║ 6541_aten_2a-130g                ║ Aten      ║ 2A-130G           ║ 2A-130G            ║  6 ║
║ 7466_eaton_5sc1000i              ║ Eaton     ║ 5SC1000I          ║                    ║  8 ║
║ 8214_ivanti-uk_template-material ║ IVANTI UK ║ TEMPLATE MATERIAL ║ 000000000003616655 ║  4 ║
║ 8361_aywun_92sfan1               ║ Aywun     ║ 92SFAN1           ║ 92SFAN             ║  9 ║
║ 9824_autodesk_00100-000000-9880  ║ AUTODESK  ║ 00100-000000-9880 ║ 00100-000000-9880  ║  5 ║
╚══════════════════════════════════╩═══════════╩═══════════════════╩════════════════════╩════╝

inventory表:

代码语言:javascript
运行
复制
╔══════════════════════════════════╦═══════╦═════════╦═════════════════════╗
║               ref                ║ scost ║ instock ║        date         ║
╠══════════════════════════════════╬═══════╬═════════╬═════════════════════╣
║ 6541_aten_2a-130g                ║    26 ║       0 ║ 2017-05-27 10:45:23 ║
║ 7466_eaton_5sc1000i              ║   489 ║       0 ║ 2017-05-27 10:45:23 ║
║ 8214_ivanti-uk_template-material ║     0 ║       0 ║ 2017-05-27 10:45:23 ║
║ 8361_aywun_92sfan1               ║     4 ║       0 ║ 2017-05-27 10:45:23 ║
║ 9824_autodesk_00100-000000-9880  ║   738 ║       0 ║ 2017-05-27 10:45:23 ║
╚══════════════════════════════════╩═══════╩═════════╩═════════════════════╝

..。我想做一个FULL OUTER JOIN (只有当键在两个表中都存在时,我才能正确地理解?)使用梅杜

代码语言:javascript
运行
复制
$data = $database->select("product", [
    "[<>]inventory" => ["ref" => "ref"],
]);

错误:

代码语言:javascript
运行
复制
Invalid argument supplied for foreach() in /var/www/html/vendor/catfan/medoo/src/Medoo.php on line

我还在控制台中尝试了这些查询,但得到了一个语法错误:

代码语言:javascript
运行
复制
SELECT *
FROM product
FULL OUTER JOIN product ON product.ref = inventory.ref;

代码语言:javascript
运行
复制
SELECT * FROM `product`, * FROM `inventory` 
WHERE product.`ref` = inventory.`ref`;

预期结果:

代码语言:javascript
运行
复制
╔═══════════════════╦══════╦═════════╦═════════╦════╦═══════╦═════════╦═════════════════════╗
║        ref        ║ mfr  ║  pnum   ║  ssku   ║ id ║ scost ║ instock ║        date         ║
╠═══════════════════╬══════╬═════════╬═════════╬════╬═══════╬═════════╬═════════════════════╣
║ 6541_aten_2a-130g ║ Aten ║ 2A-130G ║ 2A-130G ║  6 ║    26 ║       0 ║ 2017-05-27 10:45:23 ║
╚═══════════════════╩══════╩═════════╩═════════╩════╩═══════╩═════════╩═════════════════════╝
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-27 01:33:21

Mysql不支持FULL OUTER JOIN,您的逻辑似乎是INNER JOIN

代码语言:javascript
运行
复制
SELECT *
FROM product
INNER JOIN inventory ON product.`ref` = inventory.`ref`;

但我不知道为什么两个表中的ref都是相同的,您的预期结果只有一个记录,根据Medoo文档,代码应该如下所示:

代码语言:javascript
运行
复制
$data = $database->select(
   "product",
    [
       "[><]inventory" => "ref"
    ],
    "*");

对于所有的表,请尝试如下:

代码语言:javascript
运行
复制
$data = $database->select(
   "product",
    [
       "[><]inventory" => "ref",
       "[><]detail" => "ref",
       "[><]moredetails" => "ref",
       "[><]info" => "ref",
       "[><]images" => "ref",
       "[><]features" => "ref",
       "[><]categories" => "ref",
       "[><]tags" => "ref"
    ],
    ["product.*", "inventory.*"]);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44212044

复制
相关文章

相似问题

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