Mysql SQL查询以从多个表中选择同一字段
我在模式中定义了三个表Mysql SQL查询以从多个表中选择同一字段,mysql,sqlite,Mysql,Sqlite,我在模式中定义了三个表 donuts (name: string, price: integer) grocery (no: string, gname: string, minCredit: integer) distributor (dname: string, gno: string, deliverydate: date) distributor.dname和distributor.gno是引用甜甜圈和杂货店的外键,它们分别是name和no。我在尝试编写两个查询时遇到问题: 我试图
donuts (name: string, price: integer)
grocery (no: string, gname: string, minCredit: integer)
distributor (dname: string, gno: string, deliverydate: date)
distributor.dname和distributor.gno是引用甜甜圈和杂货店的外键,它们分别是name和no。我在尝试编写两个查询时遇到问题:
我试图展示在同一家杂货店可以找到的成对的甜甜圈(即,所有携带一个甜甜圈的商店都被另一个和反之亦然)。输出架构应为(donutname1、donutname2)
我尝试的是:
select d.name as donutname1, d.name as donutname2
from donuts d, grocery g, distributor dd
where d.name IN
(select d.name
from donuts d, grocery g, distributor dd
where d.name = dd.name)
这似乎是错误的,似乎给了我错误的结果。如何查询这两个名称并获得结果?尝试使用您的数据对以下内容进行一些实验:
SELECT aa.name AS donutname1, bb.name AS donutname2
FROM dunuts AS aa
INNER JOIN donuts AS bb
ON aa.name = bb.name
INNER JOIN distributor AS cc
ON aa.name = cc.dname
INNER JOIN distributor AS dd
ON bb.name = cc.dname
WHERE cc.gno = dd.gno;
您遇到的问题可能是因为您正在创建笛卡尔乘积表,并且没有正确对齐行。尝试切换到
JOIN
语法。另外,在这里添加一些示例数据和预期结果会非常有帮助,我不完全理解“所有携带一个甜甜圈的商店都被另一个占据”MySQL或SQLite是什么意思?它们是不同的产品,实现SQL的方式也不同。你能提供一些样本数据和预期输出吗?