Php 执行完全外部联接时出错
Php 执行完全外部联接时出错,php,mysql,medoo,Php,Mysql,Medoo,产品表格: ╔══════════════════════════════════╦═══════════╦═══════════════════╦════════════════════╦════╗ ║ ref ║ mfr ║ pnum ║ ssku ║ id ║ ╠══════════════════════════════════╬═══════════╬══════
产品
表格:
╔══════════════════════════════════╦═══════════╦═══════════════════╦════════════════════╦════╗
║ 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 ║
╚══════════════════════════════════╩═══════════╩═══════════════════╩════════════════════╩════╝
╔══════════════════════════════════╦═══════╦═════════╦═════════════════════╗
║ 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 ║
╚══════════════════════════════════╩═══════╩═════════╩═════════════════════╝
库存
表格:
╔══════════════════════════════════╦═══════════╦═══════════════════╦════════════════════╦════╗
║ 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 ║
╚══════════════════════════════════╩═══════════╩═══════════════════╩════════════════════╩════╝
╔══════════════════════════════════╦═══════╦═════════╦═════════════════════╗
║ 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 ║
╚══════════════════════════════════╩═══════╩═════════╩═════════════════════╝
。。。我希望使用以下方法进行完全外部联接
(仅当两个表中都存在键时才从两个表中获取列,如果我理解正确?):
我还在控制台中尝试了这些查询,但出现语法错误:
SELECT *
FROM product
FULL OUTER JOIN product ON product.ref = inventory.ref;
及
预期结果:
╔═══════════════════╦══════╦═════════╦═════════╦════╦═══════╦═════════╦═════════════════════╗
║ 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 ║
╚═══════════════════╩══════╩═════════╩═════════╩════╩═══════╩═════════╩═════════════════════╝
Mysql不支持
完全外部连接
,您的逻辑似乎是内部连接
:
SELECT *
FROM product
INNER JOIN inventory ON product.`ref` = inventory.`ref`;
但我不知道为什么两个表中的ref
都是相同的,您的预期结果只有一条记录,根据Medoo文档,代码应该如下所示:
$data = $database->select(
"product",
[
"[><]inventory" => "ref"
],
"*");
$data=$database->select(
“产品”,
[
"[>两个表中的每个ref
似乎都是相同的。为什么预期结果只有一条记录。而sqljoin
和同一个表product
@Forward啊,这就是问题所在吗?我是MySQL新手,所以对关系数据库一无所知。现在我明白了,我想列名应该是不同的,这就是它不起作用的原因。@Fo这是我的数据库结构:所有这些表都用ref
连接在一起?嗯,是的,请原谅我的愚蠢。第一次创建了一个数据库。只是注意到唯一的问题,它两次显示第一行。
$data = $database->select(
"product",
[
"[><]inventory" => "ref"
],
"*");
$data = $database->select(
"product",
[
"[><]inventory" => "ref",
"[><]detail" => "ref",
"[><]moredetails" => "ref",
"[><]info" => "ref",
"[><]images" => "ref",
"[><]features" => "ref",
"[><]categories" => "ref",
"[><]tags" => "ref"
],
["product.*", "inventory.*"]);