1

我正在尝试测试我创建的 sql 数据库。为此,我有 2 个表:项目和品牌。项目存储包括品牌名称在内的不同字段,品牌存储包括名称在内的其他字段。我想检查项目中的每个品牌,品牌表中都有对应的名称。我该怎么做?我想到了一些类似的东西:

"for each row in items"
if (count(select * from items join brands on items.brand = brands.name) == 0, select items.name, '');

但是我不知道如何在其中包含 for 语句......有什么想法吗?

4

3 回答 3

4

你可以试试这个:

SELECT items.name 
FROM items LEFT JOIN brands
    ON items.brand = brands.name
WHERE brands.name IS NULL
ORDER BY items.name

通过此查询,您可以从项目表中获取所有记录,将它们与相应的品牌记录(如果存在)连接起来,最后获取没有品牌对应记录的记录。

于 2012-04-12T17:31:46.283 回答
1
 DECLARE @Number int;
 SET @Number = 50;
 IF @Number > 100
  PRINT 'The number is large.';

ELSE BEGIN IF @Number < 10 PRINT '数字很小。'; ELSE PRINT '这个数字是中等的。'; 结尾 ; 去

于 2013-01-17T10:16:56.903 回答
0

因此,您真正想知道的是品牌表中不存在品牌的所有商品。

他们是:

SELECT DISTINCT brand
FROM items i
WHERE NOT EXISTS (
  SELECT NULL
  FROM brands b
  WHERE i.brand = b.brand
)

我建议你:

ALTER TABLE item WITH CHECK ADD CONSTRAINT item_FK_brand FOREIGN KEY (brand) REFERENCES brand (brand)
于 2012-04-12T17:51:29.777 回答