Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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中第一个表的结果选择第二个表中的项_Mysql - Fatal编程技术网

根据MySQL中第一个表的结果选择第二个表中的项

根据MySQL中第一个表的结果选择第二个表中的项,mysql,Mysql,我有两个MySQL表tableA和tableB。在表A中,我想使用以下查询选择所有邮政编码及其各自的坐标: SELECT zip,lat,lng FROM tableA 但是,我希望创建一对多关系,并根据第一个表的结果选择第二个表中的所有项。例如,我想选择表B中每个邮政编码中的所有位置的列表。通常,假设邮政编码为“00000”,我会尝试运行如下查询: SELECT locations FROM tableB WHERE distanceFormula(tableA.lat,tableA.lng

我有两个MySQL表tableA和tableB。在表A中,我想使用以下查询选择所有邮政编码及其各自的坐标:

SELECT zip,lat,lng
FROM tableA
但是,我希望创建一对多关系,并根据第一个表的结果选择第二个表中的所有项。例如,我想选择表B中每个邮政编码中的所有位置的列表。通常,假设邮政编码为“00000”,我会尝试运行如下查询:

SELECT locations
FROM tableB
WHERE distanceFormula(tableA.lat,tableA.lng,tableB.lat,tableB.lng) < 50

如何将这两个查询组合起来,对第一个查询中的每个结果运行第二个查询。

希望您能够执行以下操作:

SELECT A.`zip`, A.`lat`, A.`lng`, B.`location`
FROM `tableA` AS A
CROSS JOIN (
    SELECT *
    FROM `tableB` AS B
    WHERE distanceFormula( A.`lat`, A.`lng`, B.`lat`, B.`lng` ) < 50
) AS B
WHERE A.`zip` = '000000';
我的语法可能有点不正确,因为在我只在MSSQL上进行连接之前,我在MySQL中没有进行过类似的连接。

您可以使用子查询:

SELECT locations
FROM tableB
WHERE zip IN 
(SELECT zip
FROM tableA);

我认为我的例子很糟糕,它实际上需要使用表A中的数据来完成表B。我将更新示例。这可能是正确的答案。我的问题是,在实际问题中,我在表格B中有一个嵌套的select,所以当我尝试a.lat时,我得到a是一个未知的表格。