MST

星途 面试题库

面试题:Ruby构建复杂SQL查询语句

假设有三个表,分别为`orders`(订单表,字段有`order_id`、`customer_id`、`order_date`),`customers`(客户表,字段有`customer_id`、`customer_name`、`phone`),`order_items`(订单项表,字段有`order_item_id`、`order_id`、`product_id`、`quantity`)。现在要用Ruby构建一个SQL语句,找出在2023年1月1日后下过订单且订单项数量大于5的客户姓名和电话,要求代码实现要符合良好的编程规范,并且对SQL注入进行防范。
11.7万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试
require 'pg'

# 数据库连接配置
conn = PG.connect(
  host: 'localhost',
  port: 5432,
  user: 'your_username',
  password: 'your_password',
  dbname: 'your_database'
)

# 构建SQL语句并防范SQL注入
sql = <<-SQL
  SELECT c.customer_name, c.phone
  FROM customers c
  JOIN orders o ON c.customer_id = o.customer_id
  JOIN order_items oi ON o.order_id = oi.order_id
  WHERE o.order_date > '2023-01-01'
  AND oi.quantity > 5
SQL

# 执行SQL查询
result = conn.exec(sql)

# 输出结果
result.each do |row|
  puts "Customer Name: #{row['customer_name']}, Phone: #{row['phone']}"
end

# 关闭数据库连接
conn.close