这是一个非常基本的问题,如果有人已经提出这个问题,我道歉。
我有一个名为'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`;
任何帮助将不胜感激......
答案 0 :(得分: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
,那么它将返回{{} 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;
第一个良好的可视化器。您必须使用外连接,因为您从活动表中获取了所有目录,并从项目表中获取了匹配的目录。
第二个是为了更好地理解。