Query SQL en la cual necesito hacer un JOIN con el operador LIKE

Buenas tardes tengo duda con una consulta SQL en la cual necesito hacer uso de JOIN y el operador LIKE, la cuestion es la siguiente:

Tengo la Tabla Equipo con los siguientes campos:

id_equipo (Primary Key)(pk) nombre vendedor ip_gestion tipo localidad categoria com_snmp ultima_actualizacion 

y tengo la Tabla Interface con los siguientes campos:

id_interface(pk) id_EquipoOrigen(fK)                         status    etiqueta_prtg grupo if_index bw bw_ve id_prtg ospf_per ospf_admin description servicio inUtil outUtil rateIn rateOut id_EquipoDestino(fk) ultima_actualizacion 

Comos se puede observar, en mi tabla Interface tengo dos llaves foraneas(fk) que apuntan a la Tabla Equipo, la cuestion es que quiero actualizar el campo servicio de la tabla Interface dependiendo de como inicia el nombre del equipo asociado al id_EquipoOrigen, es decir si este Equipo empienza por IP7, quiero que se le asigne al campo servicio el valor de VOZ, por ejemplo, esto seria utilizando el operador LIKE para saber como empienza el nombre del equipo, pero la cuestion es que no se como uniria esto con el JOIN, porque para acceder al nombre del equipo necesito hacerlo a traves de la FOREIGN KEY id_EquipoOrigen

Mi consulta al momento:

hice esta consulta para traerme el nombre de un equipo, pero tenia que pasarle el id_EquipoOrigen

Select nombre  from Equipo  INNER JOIN Interface ON Interface.id_EquipoOrigen_id=Equipo.id_equipo  Where id_EquipoOrigen=106, 

¿Es posible crear una columna virtual para un modelo para una consulta join en RoR?

Realmente estuve pensando en como titular la pregunta y esto fue lo que mejor se me ocurrió.

Tengo el siguiente problema:

1.- Creé un método que me trae los tipos de tela de cada ropa, en el modelo ropa tengo esto:

def tipo_de_tela     Tela.where("id = #{self.tela_id}").first.nombre if self.tela_id end 

al llamarlo desde la consola, me trae el tipo de tela.

irb(main):004:0> ropa = Ropa.find(2)   Ropa Load (1.6ms)  SELECT  "ropas".* FROM "ropas" WHERE "ropas"."id" = $  1 LIMIT $  2  [["id", 2], ["LIMIT", 1]] => #<Ropa id: 2, nombre: "camisa", created_at: "2019-09-06 12:47:41", updated_at: "2019-09-06 12:47:41", tela_id: 2> irb(main):005:0> ropa.tipo_de_tela   Tela Load (2.1ms)  SELECT  "telas".* FROM "telas" WHERE (id = 2) ORDER BY "telas"."id" ASC LIMIT $  1  [["LIMIT", 1]] => "seda" 

Al hacer una consulta join en el modelo de maestros, para esa misma ropa:

def self.trae_uno(m_id)     self.         select("maestros.id, ropas.nombre ropa, ropas.tipo_de_tela, colors.nombre color")         .joins(:ropa, :color)         .where(id: m_id) end 

Donde m_id = 2

ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR:  no existe la columna ropas.tipo_de_tela LINE 1: SELECT  maestros.id, ropas.nombre ropa, ropas.tipo_de_tela, ...                                                 ^ : SELECT  maestros.id, ropas.nombre ropa, ropas.tipo_de_tela, colors.nombre color FROM "maestros" INNER JOIN "ropas" ON "ropas"."id" = "maestros"."ropa_id" INNER JOIN "colors" ON "colors"."id" = "maestros"."color_id" WHERE "maestros"."id" = $  1 LIMIT $  2): 

¿Alguna idea de como puedo salir de este atolladero?

inner Join entre 2 tablas con base de datos distintas POSTGRESQL

Buenas estoy realizando una consulta para construir una tabla hecho en Postgresql. Pero me encuentro con este inconveniente, estoy tratando de consultar a dos tablas que se encuentran en diferentes base de datos, pero tienen el mismo tipo de id.

Select t1.campo1 , t2.campo2 from public.tabla1 as t1 inner join as public.tabla2 t2 on t1.id = t2.id 

En SQL, despues del inner join hacia refencia de esta manera: [BaseDatos].tabla1

Mi consulta que estoy construyendo:

select t.idtrabajador ,         dim_dep.idarea,  SUM(case when  com.con_tipo='1' then 1 else 0 end) as totalMeritos, SUM(case when  com.con_tipo='2' then 1 else 0 end) as totalActivos, SUM(case when  com.con_tipo='3' then 1 else 0 end) as totalRehabilitados, SUM(case when  com.con_tipo='5' then 1 else 0 end) as totalInformativos, SUM(case when  com.con_tipo='6' then 1 else 0 end) as totalEximir, COUNT(com.con_tipo) as totalRegistro from escalafon.trabajador t inner join escalafon.comportamiento com on com.idtrabajador=t.idtrabajador left join patrimonio.area ar on ar.idarea = t.idarea left join patrimonio.sede sd on sd.idsede = t.idsede   left join public.dim_departamento dim_dep on substring(dim_dep.idarea, 3) = ar.idestructura :: text and dim_dep.sed_descripcion = dim_dep.sede  group by t.idtrabajador , dim_dep.idarea   

Consulta Inner Join 2 tabals

tengo la siguiente consulta:

SELECT termocuplas.id_modulo, transmisores.id_modulo FROM termocuplas INNER JOIN transmisores ON termocuplas.id_caldera = transmisores.id_caldera WHERE termocuplas.id_modulo = '3H' 

la estoy ejecutando desde local host, usando firefox mozilla, mi duda es por que al ejecutarla se queda en “Esperando a localhost” y al rato muestra este error:

Warning: mysqli_query() [function.mysqli-query]: (HY000/1105): Unknown error in C:\wamp\apps\phpmyadmin2.10.1\libraries\dbi\mysqli.dbi.lib.php on line 181       Fatal error: Maximum execution time of 300 seconds exceeded in C:\wamp\apps\phpmyadmin2.10.1\libraries\dbi\mysqli.dbi.lib.php on line 181 

estoy usando Wamp server

LINQ with Lambda expression – Left Join ,GroupBy ,Count

Necesito pasar esta expresion lambda para ser usada en c#, la uso para saber el número de chas por agentes

 SELECT     aa.UserId agent,     COUNT (c.Id) chatsPerAgent FROM     AvailableAgents aa LEFT OUTER JOIN Chat c ON aa.UserId = c.AgentId WHERE     aa.IsAvailable = 1 GROUP BY     aa.UserId  

y obtener algo asi donde la primera columna es el id del agente y la segunda el numero de chats que esta atendiendo

3fde3b78-815a-4c6a-b03c-a2b473ed12d2    3 74ac56eb-b8d6-44d3-914a-8af6386b00e6    0 a2d31e31-7052-445a-94d5-0af47f751c15    2 daeafdb2-52de-4126-a2eb-498346f3d1nh    0  

Optimizar una consulta relacionada en sql server inner join?

Muy buenas hice un select con inner join ,pero repito 2 veces la misma tabla Empresa yo quisiera saber si hay un método para no repetir dicha tabla les dejo el ejemplo mas las tablas: introducir la descripción de la imagen aquí

Esta es mi consulta:

SELECT EMPRESA = E.DESCRIPCION, EMPRESA_CONTRATA=EC.DESCRIPCION,NUM_COTIZACION,FECHA,P.NOM_PERSONA,ASUNTO,FG.FORMA_PAGO,GARANTIA FROM T_PRO_COTIZACION C inner join T_PRO_EMPRESA E  on C.ID_EMPRESA=E.ID_EMPRESA inner join T_SEG_PERSONA P on C.ID_PERSONA=P.ID_PERSONA inner join T_PRO_FORMA_PAGO FG on C.ID_FORMA_PAGO=Fg.ID_FORMA_PAGO  inner join T_PRO_EMPRESA EC on C.ID_EMPRESA_CONTRATA = EC.ID_EMPRESA 

Aqui otra imagen: introducir la descripción de la imagen aquí

— En si esta bien mi consulta pero como les digo quiera que tenga solo una tabla en ves de 2 si es que se puede Gracias por su atención

Problema con Inner Join, no muestra datos

Tengo el siguiente codigo

$  mes = $  _POST['mes']; $  ano = $  _POST['ano']; $  sql = '  SELECT teoricas.idusuarios, students.nombre, students.telefono, teoricas.ttotal, practicas.ptotal FROM students          INNER JOIN teoricas ON (teoricas.idusuarios = students.idusuarios)         INNER JOIN practicas ON (practicas.idusuarios = students.idusuarios)         WHERE teoricas.ttotal != 3 AND practicas.ptotal != 12 AND mes = :mes AND ano = :ano LIMIT 1';         $  statement = $  conexion->prepare($  sql);         $  statement->execute(array(             ':mes' => $  mes,             ':ano' => $  ano         ));         $  count = $  statement->rowCount();          if (!$  statement){             die("Error");         }else{             // echo $  count;             if ($  count === 0) {                 $  arreglo['mes'] = $  ano.$  mes;                 echo json_encode($  arreglo);             }else{                 while ($  data = $  statement->fetch(PDO::FETCH_ASSOC)){                     $  arreglo["data"][] = $  data;                     unset($  data);                 }                 echo json_encode($  arreglo);                 // var_dump($  arreglo);             }         } 

El problema es que no me muestra los datos al cargarlo en json_encode y si en var_dump Al poner la consulta en phpmyadmin funciona bien. Creo que tiene que ver con algo del while pero estoy perdido, ya que la base de datos no es grande y tampoco funciona el LIMIT 1

¿Cómo incluir una condicional en el WHERE solo si un JOIN tiene algo?

necesito ayuda para realizar el siguiente query en MySQL, estoy juntando dos tablas con un LEFT JOIN para arrojar resultados en caso de que la segunda tabla no contenga información.

SELECT   e.emp_id AS "empresa_id",   et.idioma_id AS "idioma" FROM empresa as e LEFT JOIN empresa_translate as et   on et.emp_id = e.emp_id WHERE   replace(replace(e.emp_nombre,'z','s'),'h','')   LIKE replace(replace('%NOMBRE%','z','s'),'h',''); 

Esto obtiene los resultados sin importar que la tabla empresa_translate tenga algún registro asociado con el id, sin embargo necesito implementar la siguiente lógica a lo que ya tengo.

Si es que existe algún registro en la tabla empresa_translate asociado a este id filtra los resultados para mostrar sólo los que tengan un et.idioma_id = 1.

SELECT   e.emp_id AS "empresa_id",   et.idioma_id AS "idioma" FROM empresa as e LEFT JOIN empresa_translate as et   on et.emp_id = e.emp_id WHERE   replace(replace(e.emp_nombre,'z','s'),'h','')   LIKE replace(replace('%NOMBRE%','z','s'),'h','')   AND et.idioma_id = 1; 

El problema de hacerlo de esta manera es que no arroja ningún resultado. ¿Cuál es la manera correcta de hacer esto?

Problema con consulta, subqueries, join y doctrine2 en symfony4

Tengo una entidad llamada User, que justamente representa a un usuario y otra entidad llamada Friendship para establacer la relación de amistad entre dos usuario.

La entidad Friendship es la siguiente:

class Friendship {     /**      * @ORM\ManyToOne(targetEntity="App\Entity\User")      * @ORM\JoinColumn(nullable=false)      */     private $  user1;      /**      * @ORM\ManyToOne(targetEntity="App\Entity\User")      * @ORM\JoinColumn(nullable=false)      */     private $  user2; } 

Lo que quiero hacer es obtener los amigos en comun entre dos amigos, esto lo puedo hacer en una consulta sql, de la siguiente manera:

SELECT user.* FROM     user,     (         (             SELECT user.id FROM friendship,user                 WHERE                     (friendship.user1_id = user.id and friendship.user2_id = '1') or (friendship.user2_id = user.id and friendship.user1_id = '1')         ) as u1         JOIN         (             SELECT user.id FROM friendship,user                 WHERE                     (friendship.user1_id = user.id and friendship.user2_id = '2') or (friendship.user2_id = user.id and friendship.user1_id = '2')         ) as u2     )     WHERE u1.id = u2.id and user.id = u1.id     ; 

La pregunta es … ¿Como hago esta consulta con doctrine de symfony?

Lo que si puedo hacer es dado un usuario, obtener sus amigos:

public function findFriends($  user) {     $  qb = ($  this->createQueryBuilder(''))         ->select('u')         ->from(User::class, 'u')         ->from(Friendship::class, 'f')         ->where('(f.user1 = u and f.user2 = :user) or (f.user2 = u and f.user1 = :user)')         ->setParameter('user', $  user)     ;     return $  qb->getQuery()->getResult(); } 

Entonces basandome en esta idea quiero obtener los amigos en comunes, y empece escribiendo lo siguiente:

public function findMutualFriends($  user1, $  user2) {     $  sub1 = $  this->_em->createQueryBuilder()         ->select('u1')         ->from(User::class, 'u1')         ->from(Friendship::class, 'f')         ->where('(f.user1 = u1 and f.user2 = :user1) or (f.user2 = u1 and f.user1 = :user1)')         ->setParameter('user1', $  user1)         ;      $  sub2 = $  this->_em->createQueryBuilder()         ->select('u2.id')         ->from(User::class, 'u2')         ->from(Friendship::class, 'f')         ->where('(f.user1 = u2 and f.user2 = :user2) or (f.user2 = u2 and f.user1 = :user2)')         ->setParameter('user2', $  user2)         ; 

Ahora, no se como continuar con la consulta?

Can we update multiple record with join of two query

Can we run Update query to update multiple records with join ? Below query is working fine when we running with one employee number – update java set JAVA_MECHANISM=’RECONCILIATION’ where usr_key =(select usr_key from usr where usr_emp_no=’******’ and usr_status=’Active’) and JAVA_MECHANISM= ‘ACCESS’;

Now requirement is want to run this query with all users who exist with where filter of 2 tables where usr.usr_status=’Active’ and java.JAVA_MECHANISM= ‘ACCESS’;

i.e. update oiu set OIU_PROV_MECHANISM=’RECONCILIATION’, POL_KEY=null, OIU_POLICY_BASED=null, OIU_POLICY_REVOKE=null where usr_key IN(select usr_key from usr where usr_status=’Active’ and usr_udf_isexecutiveuser=’1′) and OIU_PROV_MECHANISM = ‘AP HARVESTED’;

it’s taking too much time more than 10 mins but not completed as IN takes much time so any idea how we can get with oracle query ???