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

180
Visualizações
Las tablas de combinación de consultas MySQL de CI y la instrucción where no devuelven todas las filas

Tengo 3 tablas a las que quiero unirme, sin embargo, cuando uso la declaración where en la tercera tabla, y la tercera tabla no la tiene, no devuelve la fila de la primera y la segunda tabla aunque estoy usando la izquierda unirse.

 Table 1 +---------+--------------+----------+ | acc_PID | acc_name | acc_type | +---------+--------------+----------+ | 1 | Account 1 | 1 | | 2 | Account 2 | 1 | | 3 | Account 3 | 2 | | 4 | Account 4 | 1 | +---------+--------------+----------+ Table 2 +-------------+-----------------+-----------+ | journal_PID | journal_account | trans_PID | +-------------+-----------------+-----------+ | 1 | 1 | 1 | | 2 | 2 | 2 | | 3 | 1 | 3 | +-------------+-----------------+-----------+ Table 3 +-----------+----------------+ | trans_PID | trans_location | +-----------+----------------+ | 1 | 1 | | 2 | 1 | | 3 | 2 | +-----------+----------------+ // CI query $this->db->join('table_2 b', 'a.acc_PID = b.journal_account', 'LEFT'); $this->db->join('table_3 c', 'b.trans_PID = c.trans_PID', 'LEFT'); $this->db->where('a.acc_type', '1'); $this->db->where('c.trans_location', '1'); $this->db->group_by('a.acc_PID'); $query = $this->db->get('table_1 a'); $result = $query->result();

Ahora, a partir de los datos anteriores, si uso ($this->db->where('c.trans_location', '1')), el resultado no devolverá la Cuenta 4 ya que no hay datos de acc_PID ='4' en table_2 y table_3, sin embargo, quiero que el resultado devuelva la Cuenta 4 también aunque no haya datos de la cuenta 4 en la tabla 2 y la tabla 3, sin $this->db->where('c.trans_ubicación', '1' ), el resultado también muestra la cuenta 4, sin embargo, con la instrucción de ubicación where no devuelve la fila de la tabla 1 a pesar de que usé la combinación izquierda, ¿no debería devolver el resultado de la tabla 1 también?

Gracias de antemano.

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Intente agregar una condición en Join en lugar de en la cláusula where. Si escribe una condición en la cláusula where, agregará una condición después de que la unión signifique filtro tras filtro,

O no use la combinación izquierda y agregue la condición where al final.

Una cosa más: no encontré ninguna relación de la tabla 1 con la tabla 2 o la tabla 3. Si journal_account está relacionado con la tabla 1, entonces debería funcionar.

Lo intento yo mismo, esta es la solución, creo:

 SELECT * FROM `table1` INNER JOIN table2 ON table2.journal_account = table1.acc_PID INNER JOIN table3 ON table3.trans_PID = table2.trans_PID WHERE table1.acc_type = 1 AND table3.trans_location = 1 GROUP BY table1.acc_PID

Y esto también:

 SELECT * FROM `table1` INNER JOIN table2 ON table2.journal_account = table1.acc_PID INNER JOIN table3 ON table3.trans_PID = table2.trans_PID AND table3.trans_location = 1 WHERE table1.acc_type = 1 GROUP BY table1.acc_PID

Esto me dará dos Cuenta Cuenta 1 y Cuenta 2

Espero que esto te ayudará.

about 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