如果不在当前表中,mysql 从存档表中选择数据

标签 mysql sql

不确定标题是否足够好地解释了我的情况,但我已经搜索并发现我可以做一个 WHERE NOT EXISTS 子句,但我似乎无法弄清楚它需要如何构建。以下是我的情况。

我有一个表agents,其中包含代理登录信息等。

我有另一个表 listings,它通过“agent_id”链接到 agents 表。

代理商有自己的登录名,可以添加他们的房源等,整个系统根据谁登录等来拉取他们的房源。

我遇到了 super 管理员现在希望能够删除代理的情况,但他们希望他们的旧列表在数据库中保持存档和可搜索等。

我创建了一个表 agents_archived,当 super 管理员删除它们时,它会将它们在 agents 中的行复制到 agents_archived 并将其从代理表。

我的问题是,如果当前代理表中不存在代理数据,我不确定如何让查询选择他们的代理数据。例如,这是一个搜索查询。

SELECT l.*, a.first_name, a.last_name FROM listings l 
LEFT JOIN agents a ON l.agent_id = a.id WHERE l.agent_id = '" . $_GET['qa'] . "' 
ORDER BY FIELD(l.status, 'active','inactive','under-contract','on-hold','title-issue','auction','closed','withdrawn'), l.street_name

如果当前不存在,我需要它从 agents_archived 表中提取代理列。

我希望这是有道理的。

最佳答案

我会使用以下内容:

SELECT l.*,
       ifnull(a.first_name,a2.first_name) as first_name,
       ifnull(a.last_name,a2.last_name) as last_name,
       case when a.id is null then 'archived' else 'active' end as agent_status
  FROM listings l
  LEFT JOIN agents a
    ON l.agent_id = a.id
  left join agents_archived a2
    on l.agenct_id = a2.id
 WHERE l.agent_id = 'xyz'

这将显示代理的所有列表,无论它们是事件的还是存档的,并且它会识别它们是事件的还是存档的。

关于如果不在当前表中,mysql 从存档表中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24876467/

相关文章:

php - Symfony2 Doctrine,通过外键连接表

mysql - 从 MySQL 中的多行中获取总数

mysql - 如何为手机号码添加 0(零)

sql - 不受支持 此版本的 Visual Studio 无法打开以下项目

sql - 谷歌bigquery中包含的字符串的等价物

php - 我可以在我的网站上创建一个按钮来备份我的数据库吗?

mysql - Nodejs 和 DBaaS SQL

PHP 分配主键和外键

mysql - 使用group by查询两个db并显示详细信息

sql - POSTGRESQL:如何过滤以产生查询?