sql >> Database teknologi >  >> RDS >> PostgreSQL

Gruppering af nogle resultat sql-felter i et fælles objekt

Nedenstående forespørgsel burde gøre jobbet:

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
)

Bemærk venligst, at du skal bruge group_by klausul.




  1. Homebrew brew installer mysql giver ... Fejl under indstilling af værdien '127.0.0.1' til 'server_id'

  2. MySQL:Deltag i forespørgsel på tværs af flere databaser placeret på forskellige servere

  3. Hvordan får man postgresSQL til at fungere på en Windows 7-computer med django?

  4. Php og MySQL med Highchart