gpt4 book ai didi

php - 如何连接其他表关联的多个表

转载 作者:可可西里 更新时间:2023-11-01 07:08:26 24 4
gpt4 key购买 nike

我正在开发一个网站,人们可以在其中发布他们的房屋出租。我正在使用 php 5.2.0 和 MySQL 5+

出版物存储在这样的表中

ta_publications
+---+-------------+------+
|id | name | date |
+---+-------------+------+
| 1 | name_001 | ... |
| 2 | name_002 | ... |
| 3 | name_003 | ... |
+---+-------------+------+

我有不同的刊物,有“互联网”、“自制服务”、“卫星电视”等“特色”

这些特性将来可能会改变,我希望能够添加/删除/修改它们,所以我将它们存储在数据库中的一个表中。

ta_features
+---+-------------+
|id | name |
+---+-------------+
| 1 | Internet |
| 2 | Wi-Fi |
| 3 | satelital tv|
+---+-------------+

使用下表与出版物相关

ta_publication_features
+---+-------------+----------------+
|id | type_id | publication_id |
+---+-------------+----------------+
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 3 | 1 |
+---+-------------+----------------+

我认为这很容易理解;有一个名为 name_001 的出版物,它有互联网、wi-fi 和卫星电视。

我对图像有相同的数据模式,我将它们存储在这个表中

ta_images
+---+-------------+
|id | src |
+---+-------------+
| 1 | URL_1 |
| 2 | URL_2 |
| 3 | URL_3 |
+---+-------------+

并使用下表将它们与出版物联系起来

ta_publication_images
+---+-------------+----------------+----------+
|id | img_id | publication_id | order |
+---+-------------+----------------+----------+
| 1 | 1 | 1 | 0 |
| 2 | 2 | 1 | 1 |
| 3 | 3 | 1 | 2 |
+---+-------------+----------------+----------+

列顺序给出了在列出单个出版物时出版物应显示的顺序。

Philipp Reichart 向我提供了一个查询,该查询将搜索并获取所有具有特定特征的出版物。它适用于列出出版物,我无法修改它以返回我需要的数据。

所以我想我将运行该查询并获取所有通过搜索条件的出版物,然后使用另一个查询来列出它们。

这些出版物的列表应包括所有出版物数据(ta_publications 上的所有内容)+ 它的所有功能 + 最重要的(顺序 0)图像源。

对于每个出版物,我可以有两个简单的查询,分别返回最重要的图像及其所有功能,但是当每页列出 25 个出版物时,它将是 1 个搜索查询 + (2 个查询每个出版物 * 25 个出版物)= 51 个不同的查询,显然效率不高。

编辑:

我的问题是,我如何创建一个 SQL 查询,给定一些发布 ID,将返回:所有发布数据(ta_publications 上的所有内容)+ 它的所有功能 + 最重要的(顺序 0)图像 src

最佳答案

你会得到多余的出版物和图像数据,但这里有一种方法可以用一个查询来完成:

   SELECT p.id, p.name, p.date,
f.id, f.name,
i.id, i.src
FROM ta_publications p
JOIN ta_publication_features pf ON p.id = pf.publication_id
JOIN ta_features f ON f.id = pf.type_id
JOIN ta_publication_images pi ON p.id = pi.publication_id
AND pi.order = 0
JOIN ta_images i ON i.id = pi.img_id
WHERE p.id IN ( -- list of publication ids );

关于php - 如何连接其他表关联的多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7589181/

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