¿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?

¿como incluir 6 condiciones en una consulta sql uniendo dos tablas?

tengo dos tabla la primera es muro(usuario,urls,puntos) la segunda es historial(urls,uqvlp,uqrlv,fecha) en el cual la columna uqvlp hace referencia a usuario que vio la pagina, y uqrlv que es usuario que recibio la visita. quiero hacer en una solo consulta sql que me seleccione ambas tablas luego que me no imprima la fila del usuario actual, que si muro es distinto a cero, que si el uqvlp es distinto al usuario actual, que si ese enlace no ha cumplido un dia desde que lo visito que no lo muestre, y por ultimo que el uqrlv sea distinto al usuario que publico su enlace. no se si me di a entender

quiero que cuando haga click en el enlace no lo vuelva a ver durante 24 horas cumpliendo con las demás condiciones

esto es lo que tengo hasta ahora, pero aun asi no hace lo que quiero

$  user = $  _SESSION['user'];  SELECT muro.urls, muro.usuario, muro.puntos, historial.uqvlp,         historial.uqrlv  FROM muro  left join historial on muro.urls=historial.urls  where(historial.uqvlp is null or historial.uqvlp<>'$  user')  and muro.puntos<>0 and historial.fecha > DATE_SUB(NOW(), INTERVAL 24 HOUR)  AND historial.fecha <= NOW() 

no me devuelve ningun error solo que cuando lo ejecuto, me sigue apareciendo un usuario que vio el enlace y no deberia de aparecer solo hasta que transcurra las 24 horas

Consulta SELECT con dos claves foraneas que refieren a una misma tabla en Postgre

Tengo dos tablas en PostgreSQL de la siguiente manera:

Tabla “users”, con los siguientes campos:

  • user_id : integer incremental, y clave primaria de la tabla
  • user_name : varchar

y otra tabla “data” con los siguientes campos:

  • data_id: integer incremental, y clave primaria
  • descripcion: varchar
  • created_by: integer y clave foranea de user_id de la tabla users
  • modified_by: integer y clave foranea de user_id de la tabla users

La consulta que quiero obtener, es la data_id, descripcion, y el user_name de los usuarios referenciados en created_by y modified_by

Lo que probe fue lo siguiente:

SELECT data_id, descripcion, users.user_name FROM data  LEFT JOIN users ON users.user_id = data.created_by LEFT JOIN users ON users.user_id = data.modified_by 

y me dio el error que ya esperaba:

table name "users" specified more than once 

Ademas de que en el select estoy llamando a user_name una sola vez, y no dos como debiera ser, pero no tengo idea de que mas hacer.

¿Como hago en esta consulta en sqlserver?

Buenas me podrian ayudar en esta cosulta en la base de datos northwind

–QUIERO VER UN LISTADO QUE ME DIGA POR CLIENTE QUE PRODUCTOS(NOMBRE) HA COMPRADO , PERIODO DE LA COMPRA(FECHA DE LA COMPRA EJM’MAR-96′) –EL MONTO DE LA COMPRA Y QUE SE VEA CONBINACIONES DE TODOS CONTRA TODOS — Y HAY QUE INCLUIR LOS CLIENTE QUE NO TE COMPRARON Y QUE DIGA QUE ESE CLIENTE COMPRO CERO — NOTA INCLUIR TODOS LOS CLIENTES POR CADA MES

LLegue solo hasta esta parte

SELECT C.CompanyName,        P.ProductName,        o.OrderDate,        convert(varchar(100),datename(month,(o.OrderDate))) +'/'+ convert(varchar(100),year(o.OrderDate)) [Mes Año],        (od.Quantity*od.UnitPrice) Total,        lista.Date FROM (SELECT DATEADD(month ,number+1,'19951201') [Date]         FROM master..spt_values         WHERE type = 'P'         AND DATEADD(DAY,number+1,'19960101') < '20001201') lista,Customers C join Orders O     on C.CustomerID = O.CustomerID join [Order Details] OD     on O.OrderID = OD.OrderID join Products P     on OD.ProductID = P.ProductID where O.OrderDate=lista.Date order by [Mes Año]; 

Muchas gracias igualmente

Error de conexión al hacer consulta python a postgresql

Alguien podria decirme porque del error..Estoy haciendo dos conexiones de diferentes servidores uno local y otra de una replica.Las hago en una clase y estoy ocupando esas conexiones en los metodos.Pero al estar ejecutando de repente me aparece este error

error en consulta canceling statement due to conflict with recovery

ejecuta mis consultas unos 4 veces y aparece otro error

DETAIL: User query might have needed to see row versions that must be removed. HINT: In a moment you should be able to reconnect to the database and repeat your command. server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. error en consulta current transaction is aborted, commands ignored until end of transaction block

No entiendo bien que esta pasando..Este es mi codigo

class clsDatos:     Conex1 = psycopg2.connect(         host="localhost", database="db_monitor", user="postgres", password="eleven"     )     Conex2 = psycopg2.connect(         host="192.168.1.17",         database="Linker",         user="000we",         password="hsjdbfr36",     )      def ConsultaLinker(self, idMaximo):         try:              _anoActual = datetime.datetime.now().year  # saca año             _semanaActual = datetime.date.today().isocalendar()[1]  # saca Nsemana             _semana = "{}{}".format(_anoActual, str(_semanaActual))  # concateno             _query = """SELECT "int_id_Linker",int_id,dt_mensaje,int_puertos,int_semana,int_ipl FROM public."tbl_Mensajes_Hexa" where int_semana=201936 AND int_id >'{}' AND int_id < 1291145677  ORDER BY int_id ASC limit 3000""".format(                 idMaximo             )             _cur = self.Conex2.cursor()             _cur.execute(_query)             self.Conex2.commit()             _rows = _cur.fetchall()             _filas = {}             for r in _rows:                 _ipLinker = ".".join([str((r[5] >> 8 * i) % 256) for i in [0, 1, 2, 3]])                  if _ipLinker.startswith("10.216") or _ipLinker.startswith("10.219"):                     _tipo = 1                  elif (                     _ipLinker.startswith("10.196")                     or _ipLinker.startswith("100.64")                     or _ipLinker.startswith("100.126")                 ):                     _tipo = 2                  else:                     _tipo = 3                  _columnas = {                     "int_id_Linker": r[0],                     "int_id": r[1],                     "dt_mensaje": r[2],                     "int_puertos": r[3],                     "int_semana": r[4],                     "int_ipl": _ipLinker,                     "tipo": _tipo,                 }                 _filas[r[1]] = _columnas              return _filas         except (Exception, psycopg2.Error) as error:             print("error en consulta", error)          # finally:         #   if self.Conex2 is not None:         #      self.Conex2.close()         #     print("Conexión finalizada.")      def InsertaCadenas(self, telcel, emnify, public, dt_registro, idMax):         try:             _query = """INSERT INTO tbl.resumen_cadena2(int_telcel,int_emnify,int_publico,dt_registro,int_id_max)VALUES ('{}', '{}', '{}','{}','{}')""".format(                 telcel, emnify, public, dt_registro, idMax             )             _curr = self.Conex1.cursor()             _curr.execute(_query)             self.Conex1.commit()             rows = _curr.rowcount             print(rows, "insertados")          except (Exception, psycopg2.Error) as error:             print("error:", error)     # finally:         #   if self.Conex2 is not None:         #      self.Conex2.close()         #     print("Conexión finalizada.") 

Consulta MYSQL donde muesta resistros de una tabla, si hay coincidencia con otra tabla

tengo 2 tablas en una base: tabla1 y tabla2. Cuyas columnas las llamo dato1, dato2, etc… La tabla1 tiene datos de personas: dato1 = id, dato2 = nombre, dato3 = apellido, dato4 = edad, dato5 = teléfono, dato6 = compañía de celular. La tabla2 tiene los números de teléfono: dato1 = id, dato2 = número de teléfono. Necesito ver los datos de la tabla1, siempre y cuando ciertas condiciones de la tabla1 estén presentes y el número de teléfono exista en la tabla2. Yo intenté con el siguiente query, pero me da error:

SELECT * FROM tabla1 WHERE dato2=Pedro and dato4=45 and dato5=44789858  IF EXISTS (SELECT dato1 FROM tabla2 WHERE  tabla2.dato2 = tabla1.dato5); 

Alguna sugerencia de como puedo lograrlo? no tengo muchos conocimientos en MYSQL. Muchas gracias.

consulta en spring con postgresql

hola que tal espero y me ayuden con mi duda , tengo mi consulta de esta manera en mi DAO, pero no me carga los datos, no se si esta mal mi consulta, estoy trabajando con hibernate y postgresql

@Override     public List<Vw_dh_assay> listAssayReport(double year, String project_id, String hole_id) {         Session session = this.sessionFactory.getCurrentSession();         String query = ("SELECT DISTINCT year,project_id,hole_id from "                 + "Vw_dh_assay where year = :year AND project_id = :project_id  AND hole_id = :hole_id");         List result = session.createQuery(query).setParameter("year", year).setParameter("project_id", project_id)                 .setParameter("hole_id", hole_id).list();          System.out.println(result);         return result;     } 

Mysql laravel filtrar un campo hacer un count en una consulta

Hola tengo un problema necesito filtrar mi tabla incidencias a la cual le hago 3 count el problema es que el ultimo count tengo que aplicarlo 2 veces Tengo el campo responsable_incidencia que puede ser 0 o 1 necesito contar cuantos 0 hay y cuantos 1 hay aparte de mostrar los otros 2 count en una tabla tengo lo siguiente pero solo puedo hacer 1 where efectivo a la tabla para filtrarla

$ campos = DB::table(‘incidencias’) ->select(DB::raw(‘count(id_incidencia) as ticket,empresa.nombre, sum(incidencias.estado) as solucionado,count(responsable_incidencia) as responsableC,count(responsable_incidencia) as responsableL’)) ->join(’empresa’,’empresa.id_empresa’,’=’,’incidencias.id_cliente’) ->where(‘incidencias.responsable_incidencia’, ‘=’,’1′ ) //->where(‘incidencias.responsable_incidencia’, ‘=’,’0′ )

                 ->where('id_cliente', '>', '0' )                  //->where('incidencias.responsable_incidencia', '=','0' )                  ->groupBy('empresa.nombre')                   ->orderBy('ticket', 'DESC')                   ->get(); 

¿Cómo cambio el tipo de dato de una columna solamente para hacer una consulta en MySQL?

Estoy haciendo una consulta a una tabla para ver el máximo de los id's existentes, pero la columna de id es de tipo varchar por lo tanto ya que el id del ultimo registro sobrepasó el 99 entonces, me lo detecta como el máximo, entonces, mi idea era hacer que se cambie el tipo de dato de varchar a entero cuando haga la consulta para que así tome el último id, pero la verdad no sé y no tengo la más mínima menor idea de hacer, sí alguien me puede ayudar lo agradezco.

Dejo la consulta en MySQL

$  select = "SELECT max(id_controlAsis) as id FROM control_asistencias"; 

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