gpt4 book ai didi

mysql - 使用 Propel 1.6 从 3 个表中检索信息和计数的单个 SQL 查询

转载 作者:可可西里 更新时间:2023-11-01 07:49:52 25 4
gpt4 key购买 nike

我有以下(简化的)数据库结构:

表格书籍

id
title

表格页面

id
bookId
number

id
pageId

page.bookIdfigure.pageId 是指向主键 book.idpage.id< 的外键分别。

一本书可以没有页面,一页可以没有数字。

对于指定的图书 ID,使用单个 sql 查询,我想检索

  1. 图书信息
  2. 包含各自信息的页面列表
  3. 每页的图数

结果的示例 JSON 表示如下:

{
"id": 34,
"title": "The title"
"pages": [
{
"id": "44",
"number": 1
"figureCount": 2
},
{
"id": "45",
"number": 2
"figureCount": 5
},
...
]
}

Propel 1.6 可以实现吗?结果 SQL 查询应该是什么?

我使用 MySql 5.0。

编辑:这是我的(简化的)Propel schema.xml:

<table name="book" phpName="Book">
<column name="id" type="bigint" required="true" primaryKey="true" autoIncrement="true" />
<column name="title" type="varchar" size="512" required="true" />
</table>

<table name="page" phpName="Page" >
<column name="id" type="bigint" required="true" primaryKey="true" autoIncrement="true" />
<column name="book_id" type="bigint" required="true" />
<column name="number" type="integer" required="true" />
<foreign-key foreignTable="book" phpName="Book" refPhpName="Page" onUpdate = "cascade" onDelete = "cascade">
<reference local="book_id" foreign="id" />
</foreign-key>
</table>

<table name="figure" phpName="Figure">
<column name="id" type="bigint" required="true" primaryKey="true" autoIncrement="true" />
<column name="page_id" type="bigint" required="true" />
<foreign-key foreignTable="page" phpName="Page" refPhpName="Figure" onUpdate = "cascade" onDelete = "cascade">
<reference local="page_id" foreign="id"/>
</foreign-key>
</table>

最佳答案

根据@user1073631 的精彩回答,推进查询应该是这样的:

$books = BookQuery::create()
->select(array('Book.Id', 'Book.Title', 'Page.Id', 'Page.Number'))
->withColumn('count(Figure.ID)', 'FigureCount')
->leftJoin('Book.Page')
->leftJoin('Page.Figure')
->groupBy('Book.Id')
->groupBy('Book.Title')
->groupBy('Page.Id')
->groupBy('Page.Number')
->find();

我不确定 join(),最好查看您生成的类以确定这一点。

关于mysql - 使用 Propel 1.6 从 3 个表中检索信息和计数的单个 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14261485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com