【发布时间】:2011-11-27 04:47:11
【问题描述】:
我正在开发一个网站,人们可以在该网站上发布他们的房屋出租信息。我正在使用 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 的出版物,它有互联网、无线网络和卫星电视。
我有相同的图像数据架构,我将它们存储在这个表中
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 阶)图像 src。
对于每个出版物,我可以有两个简单的查询,它们将分别返回最重要的图像及其所有功能,但是当每页列出 25 个出版物时,它将是 1 个搜索查询 +(2 个查询每个出版物 * 25 个出版物)= 51 个不同的查询,显然效率不高。
编辑:
我的问题是,我如何创建一个 SQL 查询,给定一些发布 ID,它将返回:所有发布数据(ta_publications 上的所有内容)+ 它的所有功能 + 最重要的(0 阶)图像 src
【问题讨论】:
-
写得很好,因为你是新手。 :) +投票
-
您实际上还没有问过问题。展示你想要达到的目标。
-
那么您是否要求查询返回所有出版物(按 ID),包括它们的特征和顶部图片?
-
莱克:谢谢!吉姆:我想这不是很清楚,我重新提出了这个问题。迈克:是的。我把问题分成两部分。在给定 ID 列表(使用第一部分中的 id)的情况下,查找与搜索条件匹配的出版物的 ID(完成)和另一个以选择所有出版物数据、它们的所有特征和顶部 img
标签: php mysql sql database database-design