【发布时间】:2020-05-16 07:26:01
【问题描述】:
我需要找到喜欢啤酒或红酒的独特饮酒者。但是,查询必须使用集合代数运算来实现。
这是我目前所拥有的:
SELECT DRINKER
FROM LIKES
WHERE DRINK = 'BEER' OR 'RED WINE';
这不是使用集合代数运算。我对 SQL 真的很陌生,所以对此的任何帮助将不胜感激。
这是我从中获取数据的表:
CREATE TABLE LIKES( /* Drinkers like drinks */
DRINKER VARCHAR(30) NOT NULL, /* Drinker name */
DRINK VARCHAR(30) NOT NULL, /* Drink name */
RATING DECIMAL(1) NOT NULL, /* Rating of the drink */
CONSTRAINT LIKES_PKEY PRIMARY KEY(DRINKER, DRINK),
CONSTRAINT LIKES_FKEY1 FOREIGN KEY(DRINK) REFERENCES ALLDRINKS(DRINK),
CONSTRAINT LIKES_DKEY2 FOREIGN KEY(DRINKER) REFERENCES DRINKERS(DRINKER));
以及表'DRINKERS':
CREATE TABLE DRINKERS ( /* All drinkers */
DRINKER VARCHAR(30) NOT NULL,
CONSTRAINT DRINKERS_PKEY PRIMARY KEY (DRINKER));
插入语句:
INSERT INTO LIKES VALUES('TOM', 'BEER', 6);
INSERT INTO LIKES VALUES('JANUSZ', 'VODKA', 6);
INSERT INTO LIKES VALUES('JANUSZ', 'RUM', 5);
INSERT INTO LIKES VALUES('JANUSZ', 'BEER', 6);
INSERT INTO LIKES VALUES('JANUSZ', 'CHAMPAGNE', 6);
INSERT INTO LIKES VALUES('JANUSZ', 'RED WINE', 6);
INSERT INTO LIKES VALUES('JANUSZ', 'WHITE WINE', 5);
INSERT INTO LIKES VALUES('JANUSZ', 'PORT', 5);
INSERT INTO LIKES VALUES('PETER', 'CHAMPAGNE', 4);
INSERT INTO LIKES VALUES('PETER', 'COGNAC', 3);
INSERT INTO LIKES VALUES('PETER', 'RUM', 3);
INSERT INTO LIKES VALUES('PETER', 'WHISKY', 6);
INSERT INTO LIKES VALUES('MARY', 'CHAMPAGNE', 5);
INSERT INTO LIKES VALUES('MARY', 'VODKA', 1);
INSERT INTO LIKES VALUES('MARY', 'COGNAC', 4);
INSERT INTO LIKES VALUES('JOHN', 'CHAMPAGNE', 4);
INSERT INTO LIKES VALUES('JOHN', 'VODKA', 2);
INSERT INTO LIKES VALUES('JOHN', 'RUM', 6);
INSERT INTO LIKES VALUES('JOHN', 'WHISKY', 1);
INSERT INTO LIKES VALUES('JOHN', 'BEER', 6);
INSERT INTO LIKES VALUES('JAMES', 'CHAMPAGNE', 6);
INSERT INTO LIKES VALUES('JAMES', 'COGNAC', 5);
INSERT INTO LIKES VALUES('JAMES', 'RUM', 4);
INSERT INTO LIKES VALUES('SERGIEY', 'VODKA', 6);
INSERT INTO LIKES VALUES('SERGIEY', 'RUM', 6);
INSERT INTO LIKES VALUES('SERGIEY', 'CHAMPAGNE', 3);
INSERT INTO LIKES VALUES('CLAUDE', 'CHAMPAGNE', 6);
INSERT INTO LIKES VALUES('CLAUDE', 'WHITE WINE', 5);
INSERT INTO LIKES VALUES('CLAUDE', 'COGNAC', 4);
INSERT INTO LIKES VALUES('CLAUDE', 'WHISKY', 3);
INSERT INTO LIKES VALUES('CLAUDE', 'RED WINE', 6);
期望的输出:
DRINKER
JANUSZ
JOHN
TOM
【问题讨论】:
-
样本数据(INSERT 语句)和期望的结果会很有用
-
DRINK IN ('BEER', 'RED WINE'),但是我不确定这是否构成集合代数。
-
@Strawberry 更新了插入语句和所需的输出
-
周围似乎有很多类似的问题;你们都在做同样的任务吗?
-
“集合代数”是什么意思?你的意思是 [tag:relational-algebra?] SQL 表包含行包,而不是行集。您是否被告知某些 SQL 运算符是它的“集合代数”运算符?为什么“必须使用集合代数运算来实现查询”以及“集合代数运算”在这里究竟是什么意思?请给出你的任务的确切措辞,不清楚你在问什么。
标签: mysql sql select algebra relational-algebra