我在两个不同的数据库上有两个表:
db1.1表1
+--------------+--------------------------+
| Username | Message |
+--------------+--------------------------+
| jamesbond | I need some help |
| jamesbond | I need some help |
| jamesbond | I need some help |
| jamesbond | Mission accomplished |
+--------------+--------------------------+
db2.table2
+--------------------------+--------------+
| Message | Status |
+--------------------------+--------------+
| I need some help | Ok |
| I need some help | Ok |
| I need some help | Bad |
+--------------------------+--------------+
当我使用以下SQL语法“内部联接”这些表时:
SELECT A.Username, A.Message
SUM(CASE WHEN `status` = 'Ok' THEN 1 ELSE 0 END) AS StatOK,
SUM(CASE WHEN `status` = 'Bad' THEN 1 ELSE 0 END) AS StatBAD
FROM db1.table1 as A
INNER JOIN db2.table2 as B
ON A.Message = B.Message
WHERE A.Username = 'jamesbond'
GROUP BY A.Username, A.Message
我得到了这样的结果:
+--------------+--------------------------+--------+---------+
| Username | Message | StatOK | StatBAD |
+--------------+--------------------------+--------+---------+
| jamesbond | I need some help | 2 | 1 |
+--------------+--------------------------+--------+---------+
如何获得这样的结果(DB2上没有状态的消息仍然会出现,但是SUM结果可以是零或空):
+--------------+--------------------------+--------+---------+
| Username | Message | StatOK | StatBAD |
+--------------+--------------------------+--------+---------+
| jamesbond | I need some help | 2 | 1 |
| jamesbond | Mission accomplished | NULL | NULL |
+--------------+--------------------------+--------+---------+
您需要一个左外部联接
,它将从左表中获取行,如果它与右表不匹配,您将得到NULL。
SELECT A.Username, A.Message
SUM(CASE WHEN `status` = 'Ok' THEN 1 ELSE 0 END) AS StatOK,
SUM(CASE WHEN `status` = 'Bad' THEN 1 ELSE 0 END) AS StatBAD
FROM db1.table1 as A
LEFT OUTER JOIN db2.table2 as B
ON A.Message = B.Message
WHERE A.Username = 'jamesbond'
GROUP BY A.Username, A.Message
我正在开发一个基于SAAS的站点,我必须将两个DBs中的两个表连接起来,比如说DB1中的table1和DB2中的table2。我必须使用cakephp中的join从表1和表2获取匹配记录,但它会抛出如下错误: 错误:SQLSTATE[42000]:语法错误或访问冲突:1142 SELECT命令拒绝用户'dbname'@'localhost'访问表'table_name'。 有谁能解释一下如何使用c
我有3个表格。 表: 列表模型: 列表迁移: 可为空! 表: 模型: 迁移: 表: 型号: 迁移: 表具有指向和的外键。两者的关系是一个城市或州与多个列表。 表也有外键并将一个州与多个城市联系起来。 我想从和中选择所有内容,并从listings表中计算每个城市/州的行数,我可以: 我所尝试的是: 问题是,我希望所有城市和州都在一个集合中,并为该城市/州提供另一个键/属性计数列表。 是城市还是州,没
我想加入2个表 表1: 表2: 我正在做的是 我期望得到的是
我有两个不同的服务器和,现在我有中的和中的。我试图加入这两个表在MySQL像这样。 但是我犯了一个错误。这在MYSQL中是可能的。
我对MySQL和PHP非常陌生,我正在努力处理两个表之间的内部连接。我正在构建一个脚本,它读取一个os商务数据库,并告诉我哪些产品当前处于过期订单状态。为了使产品处于过期订单状态,products_attributes表中的值设置为'134',但是它只读取product_id,而不读取'products'表中的product_model。 我想在products_attributes表中选择值为'
此时此刻,我不太确定如何处理这个问题。我还打算尝试使用外键。如有任何帮助,不胜感激。