我有这样一个数据库:
例如,用户请求带有 posts.post_id = 1
的所有 post
数据。现在我想从其他表中获取额外的数据:
- 一些来自表
posts
的字段,其中post_id = 1
- 所有来自表
postmeta
的字段,其中post_id = 1
- 一些来自表
users
的字段,这取决于post_id = 1
中的posts.user_id
- 所有具有与
post_id = 1
相关联的关系的表files
的字段 - 一些与
post_id = 1
相关联的表terms
的字段
在 PHP 中,我可以简单地运行 5 个查询来获取此信息,但我想这不是最好的方法,因为 MySQL 能够更快地执行。
更新详情:
-- select from posts
SELECT
posts.post_id,
posts.post_title,
posts.post_name,
posts.post_content,
posts.post_status,
posts.post_type,
posts.post_modified_gmt,
posts.post_date_gmt,
posts.post_mime_type,
posts.user_id
FROM
posts
WHERE
posts.post_id = 1
--select from postmeta
SELECT
postmeta.postmeta_value,
postmeta.postmeta_key,
postmeta.postmeta_id
FROM
postmeta
WHERE
postmeta.post_id = 1
SELECT
files.file_size,
files.file_type,
files.file_name,
files.file_id
FROM
files
INNER JOIN file_relationships ON files.file_id = files.file_id
WHERE
file_relationships.post_id = 1
--select from terms
SELECT
terms.term_id,
terms.term_name,
terms.term_slug,
terms.term_taxonomy,
terms.term_description,
terms.term_group,
terms.term_parent,
terms.term_count
FROM
term_relationships
INNER JOIN terms ON term_relationships.term_id = terms.term_id
WHERE
term_relationships.post_id = 1
--select from users , users.user_id depend on posts.user_id
SELECT
users.user_id,
users.user_name,
users.user_email,
users.user_nicename,
users.user_password,
users.user_displayname,
users.user_role,
users.user_bio
FROM
users
WHERE
users.user_id = 1
这是我用PHP运行的查询信息的代码: 数据库+数据 有没有仅使用MySQL来完成这个操作的方法呢?
JOIN
操作。 - andyJOIN
,我写了查询但结果似乎不太好,我获得了4条记录,包含posts
字段(在4个记录中重复)和postmeta
字段。这对性能来说不好,对吧? - Death Programmer