【发布时间】:2017-10-27 23:10:32
【问题描述】:
product表:
╔══════════════════════════════════╦═══════════╦═══════════════════╦════════════════════╦════╗
║ 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表:
╔══════════════════════════════════╦═══════╦═════════╦═════════════════════╗
║ 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(如果我理解正确,则只有在两个表中都存在键时才从两个表中获取列?)使用Medoo:
$data = $database->select("product", [
"[<>]inventory" => ["ref" => "ref"],
]);
错误:
Invalid argument supplied for foreach() in /var/www/html/vendor/catfan/medoo/src/Medoo.php on line
我也在控制台中尝试了这些查询,但出现语法错误:
SELECT *
FROM product
FULL OUTER JOIN product ON product.ref = inventory.ref;
和
SELECT * FROM `product`, * FROM `inventory`
WHERE 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 ║
╚═══════════════════╩══════╩═════════╩═════════╩════╩═══════╩═════════╩═════════════════════╝
【问题讨论】:
-
每个
ref似乎在两个表中都相同。为什么您的预期结果只有一条记录。和你的sqljoin同一张表product。 -
@Forward 啊,是这个问题吗?我是 MySQL 新手,所以对关系数据库一无所知。现在我明白了,我猜列名应该不同,这就是它不起作用的原因。
-
@Forward 这是我的数据库结构:pastebin.com/6A0E1xUM
-
所有这些表都使用
ref? -
嗯,是的,请原谅我的愚蠢。第一次创建数据库。