Ben*_*ock 4 php mysql wordpress
我正在wordpress中创建一个网站,其中包含有关电视节目的信息.我正在使用自定义字段来选择每个帖子.
该表看起来像这样
+----+---------+----------+------------+
| id | post_id | meta_key | meta_value |
+----+---------+----------+------------+
| 1 | 1 | name | Smallville |
| 2 | 1 | season | 1 |
| 3 | 1 | episode | 1 |
| 4 | 2 | name | Smallville |
| 5 | 2 | season | 1 |
| 6 | 2 | episode | 2 |
+----+---------+----------+------------+
Run Code Online (Sandbox Code Playgroud)
基本上我需要做的是选择名为"Smallville"的所有电视节目,然后根据季节对剧集进行排序.我认为这会相当简单,但我所尝试的一切都没有回报.
你能解释我怎么能这样做吗?
Luk*_*sik 11
你可以这样做:
SELECT
t1.post_id,
t1.meta_value AS name,
t2.meta_value AS season,
t3.meta_value AS episode
FROM
(
SELECT *
FROM the_table
WHERE meta_key = 'name'
) t1
INNER JOIN
(
SELECT *
FROM the_table
WHERE meta_key = 'season'
) t2 ON t1.post_id = t2.post_id
INNER JOIN
(
SELECT *
FROM the_table
WHERE meta_key = 'episode'
) t3 ON t1.post_id = t3.post_id
Run Code Online (Sandbox Code Playgroud)
这会给你结果:
| post_id | name | season | episode |
-------------------------------------------
| 1 | Smallville | 1 | 1 |
| 2 | Smallville | 1 | 2 |
Run Code Online (Sandbox Code Playgroud)
在这种形式下,任何操作都更容易.
你需要的是添加:
WHERE name = 'Smallville'
ORDER BY season, episode
Run Code Online (Sandbox Code Playgroud)
使用自联接组合行,你很高兴:
SELECT *
FROM yourtable name
INNER JOIN yourtable season
on season.post_id = name.post_id
and season.meta_key = 'season'
INNER JOIN yourtable episode
on episode.post_id = name.post_id
and episode.meta_key = 'episode'
WHERE name.meta_key = 'name'
and name.meta_value = 'Smallville'
ORDER BY season.meta_value, episode.meta_value
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2899 次 |
| 最近记录: |