Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查询以从多个表中选择同一字段_Mysql_Sqlite - Fatal编程技术网

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的方式也不同。你能提供一些样本数据和预期输出吗?