Mysql根据来自不同表的值选择查询

时间:2013-03-30 06:36:46

标签: mysql sql join

这是一个非常基本的问题,如果有人已经提出这个问题,我道歉。

我有一个名为'item'的主表。它包含所有项目相关信息,如目录,描述,可用,价格等

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

现在我想根据'activelisting'表中存在的'catalog'从'item'表中提取'catalog','description'和'avail'。 或者说“活动列表”表中的所有内容以及“项目”表中的匹配记录。

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

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

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

2 个答案:

答案 0 :(得分:0)

尝试使用INNER JOIN代替LEFT JOININNER 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,那么它将返回{{} 1}}对于那些列。您目前没有选择潜在的NULL列,因此您当前的结果应该基本上只是NULL中的所有条目。

答案 1 :(得分:0)

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

OR

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

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

第二个是为了更好地理解。