加入 3 个表而不重复的替代方法
alternative to join 3 tables without repeticions
我在mysql中有3个table,table A、B和C。
C 与 B 有关系 (b_id),B 与 A 有关系 (a_id)。
这意味着 A 有很多 B,B 有很多 C。对于 select 所有,我有这个查询:
SELECT a.id, a.name, a.text, b.ptext, c.ctext
FROM tableA as a
JOIN
tableB as b
ON
(b.p_id = a.id)
JOIN
tableC as c
ON
(c.p_pid = b.pid)
WHERE a.id = 1
其中 returns 这个:
| ID | NAME | TEXT | BTEXT | CTEXT |
|----|-------|--------------|--------|--------|
| 1 | page1 | futkdvthsa_1 | post_1 | thing1 |
| 1 | page1 | futkdvthsa_1 | post_2 | thing2 |
| 1 | page1 | futkdvthsa_1 | post_2 | thing3 |
有没有机会得到这样的东西:
id | name | text | posts
1 | page1 | futkdvthsa_1 | posts (post_1 = ( thing1 ), post_2 = ( thing2, thing3 ) )
每个 table 的单一查询还是需要以 php 的方式进行?
P.S。这将适用于具有自定义 tables.
的 wordpress 插件
我想最简单的方法是使用 php。
您将不得不使用存储过程将您的字段与 sql.
连接起来
我在mysql中有3个table,table A、B和C。
C 与 B 有关系 (b_id),B 与 A 有关系 (a_id)。
这意味着 A 有很多 B,B 有很多 C。对于 select 所有,我有这个查询:
SELECT a.id, a.name, a.text, b.ptext, c.ctext
FROM tableA as a
JOIN
tableB as b
ON
(b.p_id = a.id)
JOIN
tableC as c
ON
(c.p_pid = b.pid)
WHERE a.id = 1
其中 returns 这个:
| ID | NAME | TEXT | BTEXT | CTEXT |
|----|-------|--------------|--------|--------|
| 1 | page1 | futkdvthsa_1 | post_1 | thing1 |
| 1 | page1 | futkdvthsa_1 | post_2 | thing2 |
| 1 | page1 | futkdvthsa_1 | post_2 | thing3 |
有没有机会得到这样的东西:
id | name | text | posts
1 | page1 | futkdvthsa_1 | posts (post_1 = ( thing1 ), post_2 = ( thing2, thing3 ) )
每个 table 的单一查询还是需要以 php 的方式进行?
P.S。这将适用于具有自定义 tables.
的 wordpress 插件我想最简单的方法是使用 php。 您将不得不使用存储过程将您的字段与 sql.
连接起来