0

这是一个非常基本的问题,如果有人已经问过这个问题,我深表歉意。

我有一个名为“项目”的主表。它具有所有项目相关信息,如目录、描述、可用性、价格等

我还有另一个名为“activelisting”的表,它只有一列“目录”。

现在我想根据“activelisting”表中存在的“catalog”从“item”表中提取“catalog”、“description”和“avail”。或者换句话说,来自“activelisting”表的所有内容和“item”表中的匹配记录。

我已经研究了很多,但我找不到有效的查询。我正在使用以下查询..

SELECT t1.catalog, t1.description, t1.avail
FROM item t1
LEFT JOIN activelisting t2
ON t1.`Catalog` = t2.`Catalog`;

任何帮助,将不胜感激...

4

2 回答 2

0

尝试使用INNER JOIN而不是LEFT JOIN. INNER JOIN将保证被连接的值存在于两个表中。

SELECT i.catalog, i.description, i.avail
FROM item i
INNER JOIN activelisting a ON i.catalog = a.catalog

LEFT JOIN将返回左表中的所有结果,item如果没有activelisting相同的行,catalog那么它将只返回NULL这些列。您当前没有选择潜在的NULL列,因此您当前的结果基本上应该只是item.

于 2013-03-30T06:42:15.013 回答
0
SELECT t1.catalog, t1.description, t1.avail FROM item t1 RIGHT OUTER JOIN activelisting t2 ON t1.Catalog = t2.Catalog;

或者

SELECT t1.catalog, t1.description, t1.avail FROM activelisting t2 LEFT OUTER JOIN item t1 ON t1.Catalog = t2.Catalog;

第一个用于良好的可视化器。您必须使用外连接,因为您从 activlisting 表中获取所有目录并从项目表中获取匹配目录。

第二个更好理解。

于 2013-03-30T06:47:20.220 回答