sql - 设计数据库并编写用于评分应用的 SQL 查询

标签 sql database algorithm

enter image description here

我正在尝试设计一个数据库并编写一个 SQL 查询,以便根据某些可用的标准和选项对设备进行评分。

这里的标准例如:

  • 硬件实力
  • 软件安全
  • 设备操作系统

Master 表中给出了每个条件的选项。根据每个选项,都有一个可用的分数

我试图考虑使用连接的 SQL 查询,但由于我是一名 JavaScript 开发人员,所以完全无能为力。

这在单个 SQL 查询中是否可行?

最佳答案

如果你tidy up,你可以直接做到这一点你的数据库一点:

create table phones (
  id SERIAL PRIMARY KEY,
  model varchar(20) NOT NULL UNIQUE,
  hardware_strength INT NOT NULL,
  software_security INT NOT NULL,
  os INT NOT NULL
);

create table hardware_strength (
  id SERIAL PRIMARY KEY,
  description varchar(20) NOT NULL UNIQUE,
  score INT NOT NULL
);

create table software_security (
  id SERIAL PRIMARY KEY,
  description varchar(20) NOT NULL UNIQUE,
  score INT NOT NULL
);

create table os (
  id SERIAL PRIMARY KEY,
  description varchar(20) NOT NULL UNIQUE,
  score INT NOT NULL
);

有了这个模型,查询就很简单:

SELECT 
  a.*, 
  b.score + c.score + d.score as score
FROM phones a, hardware_strength b, software_security c, os d
WHERE 
  a.hardware_strength = b.id AND
  a.software_security = c.id AND
  a.os = d.id
;

你可以在这个sqlfiddle中玩它.

关于sql - 设计数据库并编写用于评分应用的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58506455/

相关文章:

sql - 重新排序数据库中的行

python - 如何对高密度图进行聚类

algorithm - 如何检查双向链表是否在java中正确链接?

sql - 有没有办法反转 ActiveRecord::Relation 查询?

database - DBI 连接,失败 : FATAL: sorry, 已经有太多客户端

php - 可以将邮政地址存储为一个文本字段,而不是 street1、street2 等吗?

c++ - 将排序数组的元素分成最少数量的组,使得新数组的元素之间的差异小于或等于 1

mysql - 在单个Mysql查询中从不同表中检索数据

mysql - HAVING 子句和性能

java - 是否可以使用 iBATIS 中止长时间运行的查询?