Mysql 选择空单元格不显示 [WHERE 部分]

标签 mysql select where-clause

我正在以自由职业者的身份开发支付控制软件,但我有一些关于 mysql 的问题。 。 我有一个用作日志的表,名为“Bitacora”。在表中,我有一个名为 idCliente 的列,它是自己表中一个人的 id,因为我有另一个名为“Cliente”的表,其中有一列名为“idCliente”,因此当我进行选择时,我希望显示客户的名称。

下面的示例显示了表“Bitacora”如何处理 3 行。

idBitacora, tipoBitacora, **idCliente**, idPago, idPagoVario, fecha, razon

'1', '1', **'6',** '-1', '-1', '2017-05-06 21:52:53', ''

'2', '1', **'7',** '-1', '-1', '2017-05-06 21:53:01', ''

'3', '1', **'-1',** '-1', '-1', '2017-05-06 22:19:33', ''

所以我做了一个选择查询

> SELECT **IF(bitacora.tipoBitacora = 1, 'Cliente Agregado',
> IF(bitacora.tipoBitacora = 2, 'Cliente Borrado',
> IF(bitacora.tipoBitacora = 3, 'Cliente Editado',
> IF(bitacora.tipoBitacora = 4, 'Pago Mensual', IF(bitacora.tipoBitacora
> = 5, 'Pago Vario', IF(bitacora.tipoBitacora = 6, 'Intento Clave Fallida', 'Desconocido')))))) AS Suceso** , IF(bitacora.idCliente =
> -1, '', cliente.idCliente) as idCliente FROM bitacora, cliente where cliente.idCliente=bitacora.idCliente ;

上面的粗体是一个条件,可以知道它是什么类型的日志。

> SELECT IF(bitacora.tipoBitacora = 1, 'Cliente Agregado',
> IF(bitacora.tipoBitacora = 2, 'Cliente Borrado',
> IF(bitacora.tipoBitacora = 3, 'Cliente Editado',
> IF(bitacora.tipoBitacora = 4, 'Pago Mensual', IF(bitacora.tipoBitacora
> = 5, 'Pago Vario', IF(bitacora.tipoBitacora = 6, 'Intento Clave Fallida', 'Desconocido')))))) AS Suceso , **IF(bitacora.idCliente =
> -1, '', cliente.idCliente) as idCliente** FROM bitacora, cliente where cliente.idCliente=bitacora.idCliente ;

上面的粗体是我所做的一个条件,以确保如果 cliente.idCliente 中没有客户端,该行仍然可以显示,但在我的结果中,带有 bitacora.idCliente 的行不会出现在 Cliente 中(- 1) 没有显示,因此以显示的第一个表的示例为例,查询仅返回

> Cliente Agregado |Mark
> Cliente Agregado |Zack

但我想得到

> Cliente Agregado |Mark
> 
> Cliente Agregado |Zack
> 
> Cliente Agregado |(nothing)

我已经尝试过,但仍然无法得到我想要的,我认为这是因为 WHERE 部分。但仍然无法弄清楚,几天后,我认为需要一些帮助。

最佳答案

SELECT IF(bitacora.tipoBitacora = 1, 'Cliente Agregado', IF(bitacora.tipoBitacora = 2, 'Cliente Borrado', IF(bitacora.tipoBitacora = 3, 'Cliente Editado', IF(bitacora.tipoBitacora = 4, 'Pago Mensual', IF(bitacora.tipoBitacora = 5, 'Pago Vario', IF(bitacora.tipoBitacora = 6, 'Intento Clave Fallida', 'Desconocido')))))) AS Suceso , IF(bitacora.idCliente = -1, '', cliente.idCliente) as idCliente 
FROM bitacora
LEFT JOIN cliente ON cliente.idCliente=bitacora.idCliente;

您应该像上面一样使用,因为如果我们用逗号分隔连接表,那么将应用 INNER JOIN。按照上面的方法试试吧!希望这会对您有所帮助。

为了更好地理解,请访问此链接 - SQL left join vs multiple tables on FROM line?

关于Mysql 选择空单元格不显示 [WHERE 部分],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44897250/

相关文章:

php - 如何使用 session 中的信息从 MySQL 中获取信息

select - Dojo dgrid :(预)在渲染中选择行

php - LIMIT 1 对于顶级表WITH JOIN

MySQL group_concat WHERE 字段中的第一项具有特定 ID

MySQL in 子句字符串到数组

PHP:合并两个 MySql 数组结果

php - 显示与数据库数据匹配的某些数组数据

mysql - SQL 错误 1630 : Function SUBSTRING does not exist.。嗯?

MySQL 带有 CASE WHEN、INNER JOIN 和 GROUP BY1 的多重 SELECT 查询

php - 如何从sql php中的同一个表中选择多个avg