Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

124
Visualizações
Mysql Seleccione datos específicos de 2 tablas en base a la tercera tabla

tengo tres mesas

proyecto_tbl

 db_projectid db_projectname 1 test 2 xxx

actividades_tbl

 db_id db_projectid db_category 1 1 Civil Work 2 1 Mechanical 3 1 Electrical

tbl_porcentajediario

 db_dpid db_aid db_projectid db_status 1 1 1 red 2 1 1 3 2 1

db_projectid es una clave principal en tbl_project

db_id es una clave principal y db_projectid es una clave externa en tbl_activities

db_dpid es una clave principal y db_aid es una clave externa en tbl_dailypercentage Intenté esta consulta

 select activities.db_id, activities.db_category as cat, dailypercentage.db_status, dailypercentage.db_aid, dailypercentage.db_projectid from tbl_activities as activities,tbl_dailypercentage as dailypercentage where dailypercentage.db_projectid='$projectId' and activities.db_id=dailypercentage.db_aid and dailypercentage.db_status='red'

pero tengo un error ab

Variable indefinida: gato

 while($row=mysqli_fetch_array($statusQuery)){ $status=$row['db_status']; $cat=$row['cat']; } <td> <?php if($cat=="Civil Work" && $status="red"){ echo"<p style='color:$status'>".($sumcivil/$civilCount)."</p>";} else{echo ($sumcivil/$civilCount);}?> </td>

También intento muchas cosas, la combinación izquierda y la combinación derecha.

tener el resultado que quiero

El resultado que quiero es

Para proyectos que tienen una identificación = 1

 category status civil work red mechanical work electrical work

Para proyectos que tienen una identificación = 2

 category status civil work mechanical work electrical work
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Mostraste este código:

 while($row=mysqli_fetch_array($statusQuery)){ $status=$row['db_status']; $cat=$row['cat']; }

Si su consulta no devuelve filas, $status y $cat nunca se definirán. Supongo que esto es lo que salió mal. ¿Qué sucede si ejecuta esa consulta con un cliente MySQL como phpMyadmin?

De manera similar, si su consulta devuelve más de una fila, $status y $cat capturarán los valores de solo la última fila.

Es importante averiguar lo que quiere que suceda sin filas y con varias filas.

over 4 years ago · Santiago Trujillo Relatório

0

Basado solo en las tablas de su pregunta, he elaborado el siguiente esquema (no he agregado restricciones a las claves externas, ya que esto es solo para probar).

 create table tbl_project ( `db_projectid` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `db_projectname` VARCHAR(255) NOT NULL DEFAULT 'Undefined', PRIMARY KEY (`db_projectid`) ); create table tbl_activities ( `db_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `db_projectid` INT(1) NOT NULL, `db_category` VARCHAR(255) NOT NULL DEFAULT 'Undefined', PRIMARY KEY (`db_id`) ); create table tbl_dailypercentage ( `db_dpid` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `db_aid` INT(1) NOT NULL, `db_projectid` INT(1) NOT NULL, `db_status` VARCHAR(255) NULL, PRIMARY KEY (`db_dpid`) ); insert into tbl_project (db_projectname) values ('Test'), ('xxx'); insert into tbl_activities (db_projectid, db_category) values ('1', 'Civil Work'), ('1', 'Mechanical'), ('1', 'Electrical'); insert into tbl_dailypercentage (db_aid, db_projectid, db_status) values ('1', '1', 'red'), ('1', '1', null), ('2', '1', null); select a.db_category as cat, dp.db_status from tbl_project p left join tbl_activities a on p.db_projectid = a.db_projectid left join tbl_dailypercentage dp on dp.db_aid = a.db_id where p.db_projectid = 1 group by a.db_id;

Resultados

Tuve que agregar el group by en la consulta final, ya que tiene varias filas en tbl_dailypercentage con los mismos valores de db_aid y db_projectid .

Después de eso, desea modificar su código php, colocando las cosas td dentro del ciclo while :

 <?php while($row=mysqli_fetch_array($statusQuery)):?> $status=$row['db_status']; $cat=$row['cat']; <td> <?php if($cat=="Civil Work" && $status="red"){ echo"<p style='color:$status'>".($sumcivil/$civilCount)."</p>";} else{echo ($sumcivil/$civilCount);}?> </td> <?php endwhile; ?>
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda