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

Nhóm một số trường sql kết quả thành một đối tượng chung

Truy vấn bên dưới sẽ thực hiện công việc:

from sqlalchemy import func
# ...

query = (
    select(
        [
            func.json_build_object(
                "id",
                events.c.id,
                "title",
                events.c.title,
                "location",
                func.json_agg(
                    func.json_build_object(
                        "city",
                        locations.c.city,
                        "street",
                        locations.c.street,
                        "building",
                        locations.c.building,
                    )
                ),
                "location_all_columns_example",
                func.json_agg(func.json_build_object(
                    *itertools.chain(*[(_.name, _) for _ in locations.c])
                )),
                "activity",
                func.json_agg(
                    func.json_build_object(
                        "name",
                        activities.c.name,
                    )
                ),
            )
        ]
    )
    .select_from(events.join(locations).join(activities))
    .where(
        and_(
            events.c.id == pk,
            locations.c.id == events.c.location_id,
            activities.c.id == events.c.activities_id,
        )
    )
    .order_by(desc(events.c.created_at))
    .group_by(events.c.id)  # !!! <- IMPORTANT
)

Xin lưu ý rằng bạn cần group_by mệnh đề.




  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 nhận hệ điều hành máy chủ theo giờ địa phương trong tất cả các phiên bản Postgres

  2. PostgreSQL:Sử dụng câu lệnh AND trong LEFT JOIN không hoạt động như mong đợi

  3. Cách sửa lỗi Lỗi:Cơ sở dữ liệu chưa được khởi tạo và mật khẩu siêu người dùng không được chỉ định.

  4. Sử dụng hàm Levenshtein trên mỗi phần tử trong tsvector?

  5. 30 bảng có ít hàng - TRUNCATE cách nhanh nhất để làm trống chúng và đặt lại các chuỗi đính kèm?