我的查询包括拥有和计数或全部。这些在 RA/DRC/TRC 中如何表示?我是否必须进一步简化我的 SQL 查询?这是一个简化的示例:
empl(employee (primary key), city)
managers(employee (primary key), manager (foreign key of employee))
Run Code Online (Sandbox Code Playgroud)
如果我要找到 X 市所有员工的经理(来自任何城市)的所有员工..我需要使用having/count。不知道在 RA/DRC/TRC 中这将如何完成。
我知道这样的查询的需要可能没有意义,但假设对于这个问题的目的来说这是合理的。
谢谢
sql database relational-algebra relational-database relational-division
假设它是一个销售照相机的网站.这是我的实体(表格):
Camera: A simple camera
Feature: A feature like: 6mp, max resolution 1024x768,
Run Code Online (Sandbox Code Playgroud)
事情是相机和功能之间我有多对多的关系,所以我有一个额外的表:
camera -> cameras_features -> feature
Run Code Online (Sandbox Code Playgroud)
所以,查询很简单:
如何获得具有1,2和3功能的所有相机?
这就像构建位图索引一样.
您可以用来测试解决方案是否正常的数据
C1 has features 1,2,3
C2 has features 1,2,4
C3 has features 1,2
Run Code Online (Sandbox Code Playgroud)
以下是查询和预期结果:
这是我做的(它的工作原理,但它真的很难看,不想使用它):
SELECT * FROM camera c
WHERE c.id IN (
(SELECT c.id FROM camera c JOIN cameras_features f ON (c.id=f.camera_id)
WHERE f.feature_id=1)
q1 JOIN -- simple intersect
(SELECT c.id FROM camera c JOIN cameras_features …Run Code Online (Sandbox Code Playgroud) 除了"垂直在哪里",我真的不知道如何解释.
想象一下下表:
TAGID|PRODUCTID|SHOP_ID
59 |3418-7 |38
61 |3418-7 |38
60 |4227-4 |38
61 |4227-4 |38
Run Code Online (Sandbox Code Playgroud)
现在我想返回与标签ID有关的所有产品ID:59,61.换句话说,两个标签ID 都存在行的产品ID的值.
所以我想返回3418-7,但不是4227-4
如何在SQL语句中尽可能简单地编写它?
这是我到目前为止的工作声明,但我觉得这可以用更聪明的方式完成:
SELECT
productid
FROM shop_tag_relations
WHERE
productid IN (select productid from shop_tag_relations WHERE tagid=59)
AND
productid IN (select productid from shop_tag_relations WHERE tagid=61)
GROUP BY productid,shop_id
Run Code Online (Sandbox Code Playgroud) 我有以下SQL:
SELECT `table1`.`value`, `table2`.*
FROM `table2`
INNER JOIN `table1` ON `table2`.`product_id` = `table1`.`entity_id`
WHERE `table2`.`created_at` > '2012-04-23' and
(`table1`.`value` = 264 OR `table1`.`value` = 260)
order by order_id
Run Code Online (Sandbox Code Playgroud)
返回一个这样的结果集(这只是返回结果的一部分):
value order_id ...
260 1234
260 1235
260 1236
264 1236
260 1237
260 1238
260 1239
264 1239
264 1240
260 1241
Run Code Online (Sandbox Code Playgroud)
我想要的是一个查询,它将获取这些结果,并且只返回order_id包含值260和264的订单.基于此示例,我要查找的最终结果是
260 1236
264 1236
260 1239
264 1239
Run Code Online (Sandbox Code Playgroud)
我的想法是这可以用一个子集完成,但我不完全确定完成它的细节.
SQL查询
TABLE - CUSTOMER
1001,1
1001,2
1001,3
1002,1
1002,3
1003,3
TABLE - PRODUCT
1
2
3
Run Code Online (Sandbox Code Playgroud)
结果应为1001因为它使所有值与订单表匹配.
PRODUCT表可能会随时间而变化.
我想找出谁从我这里买了所有产品.
谢谢!
我有一个movies带有两个外键(movie_id,genre_id)的table().当然,这两个领域都不是唯一的.
所以我的问题如下,我想选择一部有两种或两种以上特定类型的电影.所以我想做一些事情:
SELECT movie_id
FROM movies
WHERE genre_id = 1 AND genre_id = 2 AND genre_id = 3
Run Code Online (Sandbox Code Playgroud)
关于如何做的任何想法?谢谢!
我必须找到一对学生,他们从拥有studentID和的表中选择完全相同的课程courseID.
studentID | courseID
1 1
1 2
1 3
2 1
3 1
3 2
3 3
Run Code Online (Sandbox Code Playgroud)
查询应该返回(1, 3).
结果也不应该有重复的行,例如(1,3)和(3,1).
mysql sql postgresql aggregate-functions relational-division
我在解决一项练习时遇到困难:
有一家餐厅,供应他们最喜欢的啤酒。
(是的,我们实际上在学校有这个:D)
我有 2 个可以使用的表:
我的解决方案是:OnStock % Favoritebeer
MySQL 中没有像 DIVISION 这样的东西。我有什么想法可以解决这个问题吗?我在维基百科上找到了以下内容:http : //en.wikipedia.org/wiki/Relational_algebra#Division_.28.C3.B7.29这正是我需要的,但我很难用 SQL 翻译它。
编辑:
这里的示例数据:http : //www.sqlfiddle.com/#!2/34e00
结果应该是:
Bucher Rolf
Mastroyanni Pepe
Meier Hans
Meier Hanspeter
Meier Hansruedi
Müller Heinrich
Peters Peter
Zarro Darween
Run Code Online (Sandbox Code Playgroud) 我有以下表格:
MOVIE_ID 标题
---------- -----------------------------
1 肖申克的救赎
2 教父
3 教父:第二部分
4 黑暗骑士
5 低俗小说
6 善、恶、丑
7 辛德勒的名单
8 愤怒的人
9 搏击俱乐部
10 起始
11 阿甘正传
DIRECTOR_ID 名称
----------- -------------------------
1 蒂姆·罗宾斯
2 摩根·弗里曼
3 马龙·白兰度
4 阿尔·帕基诺
5 罗伯特·德尼罗
6 克里斯蒂安·贝尔
7 希斯·莱杰
8 约翰·特拉沃拉
9 乌玛·瑟曼
10 克林特·伊斯特伍德
11 伊莱·瓦拉赫
MOVIE_ID DIRECTOR_ID
---------- -----------
1 1
1 2
2 3
2 4
3 4
3 5
4 6
4 7
5 8
5 9 … 我有两个表user,product它们具有一对多关系(一个表user可能有多个product)。
我想创建一个查询来获取所有user同时具有橙子和香蕉的 s。在我下面的例子中,这将是john并且leeroy。
我该如何制定查询来做到这一点?
\n\n只有一个条件我会这样:
\n\nSELECT * FROM "user" \nINNER JOIN "product" ON "product"."fk_user" = "user"."id"\nWHERE "product"."product" = \'banana\';\nRun Code Online (Sandbox Code Playgroud)\n\n桌子user
\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x97\n\xe2\x95\x91 id \xe2\x95\x91 name \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 1 \xe2\x95\x91 michael \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 2 \xe2\x95\x91 john \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 3 \xe2\x95\x91 leeroy \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 4 \xe2\x95\x91 tony \xe2\x95\x91\n\xe2\x95\x9a\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa9\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x9d\nRun Code Online (Sandbox Code Playgroud)\n\n桌子product
\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x97\n\xe2\x95\x91 product \xe2\x95\x91 fk_user \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 orange \xe2\x95\x91 1 \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 orange \xe2\x95\x91 2 …Run Code Online (Sandbox Code Playgroud) sql ×8
mysql ×6
postgresql ×2
database ×1
list ×1
match ×1
oracle ×1
select ×1
sql-server ×1
sqlite ×1