0

从一个表中选择数据并将其与另一个表中的数据匹配然后将两者一起返回的最佳方法是什么?

我有一张桌子,里面有一堆信息,它是相关的国家名称。我需要从另一个表中获取与国家名称匹配的国家代码

最好使用 mysql JOIN 函数将数据链接在一起,或者使用诸如 foreach() 之类的东西来发出单独的请求以获取每个项目。

我有一种感觉 JOIN (或类似的东西)将是最好的解决方案,但是我真的不知道如何构造 mySQL 查询,因为我需要从两个表中返回数据。

$sql = "SELECT DISTINCT r.country,c.* FROM resorts LEFT JOIN ( SELECT * FROM Country WHERE r.country = c.countryName )";

表格1

  • 国家

表 2

  • ID
  • 国家的名字
  • 国家代码
4

3 回答 3

2

这是 MySQL 中一个非常简单的概念;最简单的连接之一:

SELECT columns, countryCode
FROM t1
JOIN t2 ON (t1.countryName = t2.countryName)

编辑:您在问题中添加了真实的表名/列,所以我将用这些重写查询:

SELECT id, countryName, countryCode
FROM Country
JOIN resorts ON (country = countryName)
于 2013-10-04T14:01:03.847 回答
2
SELECT r.country,c.id, c.CountryName, c.CountryCode
FROM resorts as r
LEFT JOIN Country AS c 
  ON r.country = c.countryName

或者去掉 LEFT 以返回具有国家/地区的所有度假村记录(而不是返回所有度假村记录的 LEFT,无论是否存在国家/地区记录

于 2013-10-04T14:08:39.797 回答
0

SQL 中的联接确实从两个表中返回数据,当您联接 2 个表时,SQL 解析器/引擎会生成一个“笛卡尔积”并在 table1 的每一行上循环,并检查第二个表 table2 中的每一行的联接条件返回选定的两个表中的列。因此,例如,最后当您将 table1(包含 2 行)与 table2(包含 3 行)连接时,您实际上会执行 2*3 的检查/循环,即 6。

于 2013-10-04T14:11:24.503 回答