gpt4 book ai didi

PHP 和 MySQL : Arranging rows from separate tables together and expression to determine row origin

转载 作者:搜寻专家 更新时间:2023-10-30 20:32:29 24 4
gpt4 key购买 nike

我需要从两个单独的表中取出行,并按日期降序排列。这些行在顺序或数字上不对应,并且彼此之间没有关系。

它们每个都包含站点上的更新,一个表包含来自博客的文本、链接、日期、标题等。另一个有来自图像的标题、链接、规范等。我想在网站主页的更新部分中安排一些基本信息(标题、日期、小描述),并按日期顺序排列。

将它们合并到一个表中并修改它以适应两种类型并不是我想在这里做的,博客表是 WordPress ' 标准 wp_posts,我觉得添加列以使其也适合图像表感觉不舒服。恐怕它会与以后的升级发生冲突,而且这似乎是一个笨拙的解决方案(但这并不意味着如果这里的人告诉我这是最好的解决方案,我会反对)。

以下是每个表的描述:

mysql> describe images;
+---------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| project | varchar(255) | NO | | NULL | |
| title | varchar(255) | NO | | NULL | |
| time | timestamp | NO | | CURRENT_TIMESTAMP | |
| img_url | varchar(255) | NO | | NULL | |
| alt_txt | varchar(255) | YES | | NULL | |
| text | text | YES | | NULL | |
| text_id | int(11) | YES | | NULL | |
+---------+--------------+------+-----+-------------------+----------------+

mysql> DESCRIBE wp_posts;
+-----------------------+---------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------------+------+-----+---------------------+----------------+
| ID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| post_author | bigint(20) unsigned | NO | | 0 | |
| post_date | datetime | NO | | 0000-00-00 00:00:00 | |
| post_date_gmt | datetime | NO | | 0000-00-00 00:00:00 | |
| post_content | longtext | NO | | NULL | |
| post_title | text | NO | | NULL | |
| post_excerpt | text | NO | | NULL | |
| post_status | varchar(20) | NO | | publish | |
| comment_status | varchar(20) | NO | | open | |
| ping_status | varchar(20) | NO | | open | |
| post_password | varchar(20) | NO | | | |
| post_name | varchar(200) | NO | MUL | | |
| to_ping | text | NO | | NULL | |
| pinged | text | NO | | NULL | |
| post_modified | datetime | NO | | 0000-00-00 00:00:00 | |
| post_modified_gmt | datetime | NO | | 0000-00-00 00:00:00 | |
| post_content_filtered | text | NO | | NULL | |
| post_parent | bigint(20) unsigned | NO | MUL | 0 | |
| guid | varchar(255) | NO | | | |
| menu_order | int(11) | NO | | 0 | |
| post_type | varchar(20) | NO | MUL | post | |
| post_mime_type | varchar(100) | NO | | | |
| comment_count | bigint(20) | NO | | 0 | |
+-----------------------+---------------------+------+-----+---------------------+----------------+

我可以使用像这样的单个表轻松地完成此操作(我将其包含在此处以防我在不知情的情况下使用过于复杂的方法):

$content = mysql_query("SELECT post_title, post_text, post_date FROM posts ORDER BY post_date DESC");
while($row = mysql_fetch_array($content))
{
echo $row['post_date'], $row['post_title'], $row['post_text'];
}

但是如何将两个表调用到同一个数组中以正确排列它们呢?

我所说的正确,是指他们会根据日期混合他们的 echo 结果。也许我从错误的角度看待这个问题,将它们调用到单个数组不是答案吗?

此外,我需要一种方法来根据它们来自哪个表来形成条件表达式,以便表 1 中的行与表 2 中的行得到不同的回显?

我希望表 1 的结果以不同的方式回显(我的意思是在它们周围连接不同的字符串),目的是使它们的样式与表 2 的结果不同。反之亦然。

我知道 if...else 语句在这里可以工作,但我不知道如何编写表达式来确定该行来自哪个表。

最佳答案

也许 SQL UNION 很有用

SELECT * FROM (
SELECT post_title, post_text, post_date, 'posts1' AS is_from FROM posts1
UNION
SELECT post_title, post_text, post_date, 'posts2' AS is_from FROM posts2
) AS posts1_posts2 ORDER BY post_date DESC

关于PHP 和 MySQL : Arranging rows from separate tables together and expression to determine row origin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2417437/

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