查询不显示一个结果
Posted
技术标签:
【中文标题】查询不显示一个结果【英文标题】:query don´t show one result 【发布时间】:2021-02-24 13:38:31 【问题描述】:我有这个疑问:
SELECT asistencia.codAsistencia, asistencia.fecha, bonos.codBono, asistencia.estado,
contratan.activo, contratan.codContrato, contratan.tiempoRestanteBono, asistencia.mensaje, users.nombre
FROM asistencia, users, bonos, contratan
WHERE asistencia.usuario = users.id
AND contratan.bono = bonos.codBono
AND asistencia.estado = 'pendiente'
GROUP BY asistencia.codAsistencia
我可以显示我的结果,但总是不显示全部,我想说如果我的结果是 3,我的查询显示 2,而我的所有结果都具有相同的结果。所有数据都有 state="pendiente"
表用户
public function up()
Schema::create('users', function (Blueprint $table)
$table->id();
$table->string('nif');
$table->string('nombre');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('direccion')->nullable();
$table->string('perfil')->default('usuario');
$table->integer('telefono')->nullable();
$table->rememberToken();
$table->timestamps();
);
table bonos
public function up()
Schema::create('bonos', function (Blueprint $table)
$table->increments('codBono');
$table->string('tipo',20);
$table->integer('minutos')->unsigned();
$table->Double('precio',5,2);
$table->timestamps();
);
表格辅助
public function up()
Schema::create('asistencia', function (Blueprint $table)
$table->increments('codAsistencia');
$table->dateTime('fecha');
$table->longText('mensaje');
$table->bigInteger('usuario')->unsigned();
$table->string("estado", 20)->default("pendiente");
$table->timestamps();
// hacemos la insercción aquí ya que la tabla debe estar creada
\DB::table('bonos')->insert([
['tipo' => '1/2H', 'minutos' => '30', 'precio' => '20'],
['tipo' => '1H', 'minutos' => '60', 'precio' => '40'],
['tipo' => '5H', 'minutos' => '300', 'precio' => '175'],
['tipo' => '10H', 'minutos' => '600', 'precio' => '330'],
['tipo' => '24H', 'minutos' => '1200', 'precio' => '600'],
]);
$table->foreign('usuario')->references('id')->on('users');
);
表格驱动
public function up()
Schema::create('actuacion', function (Blueprint $table)
$table->increments('codActuacion');
$table->dateTime('fecha');
$table->Integer('tiempoEmpleado');
$table->Integer('asistencia')->unsigned();
$table->foreign('asistencia')->references('codAsistencia')->on('asistencia');
);
表格对比
public function up()
Schema::create('contratan', function (Blueprint $table)
$table->increments('codContrato');
$table->Integer('bono')->unsigned();
$table->Integer('tiempoRestanteBono')->unsigned();
$table->tinyInteger('activo')->default('0');
$table->bigInteger('usuario')->unsigned();
$table->foreign('usuario')->references('id')->on('users');
$table->foreign('bono')->references('codBono')->on('bonos');
);
我附上了我的迁移,你可以展示我的灵感
【问题讨论】:
尝试删除分组方式 @MaximAbdalov 感谢您的回复,我已经解决了,但没有。我用条件 contratan.activo = 0 或 contratan.activo = 1 解决了我的问题 今日提示:切换到现代、明确的JOIN
语法!更容易编写(没有错误),更容易阅读和维护,如果需要更容易转换为外连接!
该 GROUP BY 无效,并且会在较新的 mysql 版本中引发异常(除非在兼容模式下。)
【参考方案1】:
我解决了添加条件的问题
AND contratan.activo = 0 or contratan.activo = 1
【讨论】:
以上是关于查询不显示一个结果的主要内容,如果未能解决你的问题,请参考以下文章