Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Có thể thực hiện truy vấn con với Sequelize.js không?

Tôi không nghĩ rằng một câu trả lời rõ ràng cho câu hỏi của bạn là có thể. Xem # 1869 :

Để trả lời câu hỏi tiêu đề, Sequelize sẽ tự động tạo một truy vấn con (ví dụ: # 1719 ), nhưng bạn không thể thực hiện một truy vấn con tùy chỉnh. Tôi không có tham chiếu có thẩm quyền cho một phủ định.

Có vẻ như bảng của bạn giống như sau:

EssayStats
    EssayId
    EssayDate
    WordCount

Sau đó, bạn có thể làm điều gì đó như sau:

return EssayStat.findAll({
    attributes: [
        [sequelize.literal('((SELECT wordCount FROM "EssayStats" WHERE "EssayId" = "EssayStat"."EssayId" EssayStat BY "createdAt" DESC LIMIT 1) - (SELECT wordCount FROM "EssayStats" WHERE "EssayId" = "EssayStat"."EssayId" EssayStat BY "createdAt" ASC LIMIT 1))'), 'difference'],
        'EssayId'
    ],
    group: ['EssayId']
});

Tất cả những gì nó đang làm là chạy hai truy vấn CHỌN, lấy MAX và MIN từ các truy vấn đó sau khi sắp xếp theo biến quan tâm của bạn, sau đó lấy chênh lệch của bạn. Điều đó sẽ cung cấp cho bạn những gì bạn quan tâm:sự khác biệt về số lượng từ giữa phiên bản gần đây nhất và phiên bản đầu tiên.

Mẹo ở đây là đóng gói một câu lệnh SELECT trong một trường thuộc tính.

Tất nhiên, nó lộn xộn và có lẽ không tốt hơn nhiều so với sequelize.query đóng hộp . Nhưng nó trả lời ý chính của câu hỏi của bạn.

Một giải pháp tốt hơn có thể là không chuẩn hóa một số dữ liệu của bạn và lưu trữ trực tiếp "wordCountDelta" trong mô hình Bài luận của bạn. Sau đó, bạn có thể có một afterCreate hook để tự động cập nhật trường. Đó cũng rất có thể là giải pháp nhanh nhất.

Tôi đã trả lời điều gì đó tương tự tại đây .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách kết nối với cơ sở dữ liệu bằng Sequel Pro

  2. Chọn đúng đường dẫn trong câu lệnh yêu cầu

  3. mysqli:nó có thể chuẩn bị nhiều truy vấn trong một câu lệnh không?

  4. Làm cách nào để tôi có thể bắt đầu và kiểm tra nhật ký MySQL của mình?

  5. Thay đổi số bắt đầu tăng tự động?