当前位置: 首页 > 面试题库 >

您能解决这个简单的SQL查询吗?

苍宜修
2023-03-14
问题内容

假设这是一个销售相机的网站。这是我的实体(表):

Camera: A simple camera
Feature: A feature like: 6mp, max resolution 1024x768,

事情是在相机和功能之间,我之间存在多对多关系,所以我有一张额外的桌子:

camera -> cameras_features -> feature

因此,查询很简单:

如何获得所有具有1,2和3功能的相机?

这就像构造一个位图索引。

您可以用来测试解决方案是否正确的数据

C1 has features 1,2,3
C2 has features 1,2,4
C3 has features 1,2

以下是查询和预期结果:

  • 显示所有具有功能1,2和3: C1* 的相机 *
  • 显示所有具有功能1,2和4的相机: C2
  • 显示所有具有功能1和2的相机: C1C2C3

这是我所做的事情(它可以工作,但是确实很丑陋,不想使用它):

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 f ON (c.id=f.camera_id)
    WHERE f.feature_id=2)
        q2 JOIN ON (q1.id=q2.id)
)

问题答案:
SELECT DISTINCT Camera.*
FROM Camera c
     INNER JOIN cameras_features fc1 ON c.id = fc1.camera_id AND fc1.feature_id = 1
     INNER JOIN cameras_features fc2 ON c.id = fc2.camera_id AND fc2.feature_id = 2

此处发生的情况是将摄像机筛选为功能1的摄像机,然后在该组中将摄像机筛选为功能2的摄像机。



 类似资料:
  • 问题内容: 我正在研究“您可能认识的人”功能。我有两个表: 用户 id email name etc 朋友 user_id friend_id 对于每一次友谊,我都会做两个记录。假设用户7和9成为朋友…我要在友谊表中记录一条user_id = 7,friend_id = 9,另一条user_id = 9,friend_id = 7的记录。 如何根据朋友中的朋友进行sql查询,以建议我可能认识的人?

  • 问题内容: 我有一个疑问,就所有权利而言,它应该不会失败,而且我一生无法弄清楚为什么 当我尝试运行查询时,出现“ INSERT INTO语句中的语法错误”,其中“注释”字段突出显示。如果我忽略“注释”字段及其值,则查询工作正常。是否真的有明显的我想念的东西,或者这里是否藏有Jet SQL怪癖??? 它所作用的表是: ID – autonumber primary key Store – Text

  • 问题内容: 我收到此错误: 超时时间已到。在操作完成之前超时时间已过,或者服务器没有响应。 我知道那里已经有帮助解决此问题的指南,但它们对我不起作用。我缺少什么,或者应该在哪里将代码添加到C#程序中的这些SQL语句中: 我在此行收到超时错误: 问题答案:

  • 本文向大家介绍解决一个pandas执行模糊查询sql的坑,包括了解决一个pandas执行模糊查询sql的坑的使用技巧和注意事项,需要的朋友参考一下 查询引擎使用了presto,在sql中使用了模糊查询。 一直报错: unsupported format character 解决方案 第一: 第二: 补充:pd.read_sql()知道这些就够用了 如下: 各参数意义 sql:SQL命令字符串 co

  • 问题内容: 有谁知道使用类似SQL的声明性查询语言来提供简单,快速的平面文件查询的工具吗?我宁愿不支付将文件加载到数据库中的开销,因为输入数据通常在查询运行后立即被抛出。 考虑数据文件“ animals.txt”: 假设我想为每只独特的动物提取最高价值。我想写一些类似的东西: 我可以使用以下方法获得几乎相同的结果: 而且我总是可以从那里开始的,但是当一种类似SQL的语言似乎可以如此干净地解决问题时

  • 问题内容: 目前,我的代码(PHP)中包含太多SQL查询。例如… 我正在研究使用存储过程来减少这种情况并使事情变得更健壮,但是我有一些担忧。 我在网站上使用了数百种不同的查询,其中许多非常相似。将所有这些查询从上下文(使用结果的代码)中删除并放在数据库的存储过程中时,我应该如何管理这些查询? 问题答案: 最佳的操作方法取决于您如何进行数据访问。您可以采用三种方法: 使用存储过程 将查询保留在代码中