Foros del Web » Programando para Internet » PHP » CodeIgniter »

construyendo consulta mysql

Estas en el tema de construyendo consulta mysql en el foro de CodeIgniter en Foros del Web. Ok, newbie total en codeigniter armando mi primer site solo para comenzar a dominar el framework. Consultando la clase ActiveRecord descubrí que es bastante limitada ...
  #1 (permalink)  
Antiguo 10/08/2012, 21:31
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 6 meses
Puntos: 34
Pregunta construyendo consulta mysql

Ok, newbie total en codeigniter armando mi primer site solo para comenzar a dominar el framework.

Consultando la clase ActiveRecord descubrí que es bastante limitada en cuanto a lo que me deja hacer. A ver si alguien me da una ayudita porque solo consigo errores, quiero generar una consulta como esta:

Código SQL:
Ver original
  1. SELECT * FROM clasificacion
  2. WHERE dt = (SELECT MAX(dt) FROM clasificacion)
  3. ORDER BY score DESC;

parece simple no? lo traté de resolver asi:
Código PHP:
Ver original
  1. $this->db->where('dt', $this->db->select_max('dt'));
  2. $this->db->order_by("score", "desc");
  3. $query = $this->db->get('clasificacion', $numero, $offset);

pero por lo visto no se puede, me mezcla las dos consultas, usa el where y el order by en la que no es... cualquier cosa.

Alguna pista?
  #2 (permalink)  
Antiguo 11/08/2012, 08:01
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: construyendo consulta mysql

AR no tiene ningun metodo que puedas usar para hacer subquerys. Podes usar el metodo query() y poner la consulta, o en el metodo where usar db->where('subquery', NULL, FALSE) asi lo puede leer el query literalmente.
__________________
Drupal Argentina
  #3 (permalink)  
Antiguo 11/08/2012, 13:08
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 6 meses
Puntos: 34
Respuesta: construyendo consulta mysql

quedó así:
Código PHP:
Ver original
  1. $this->db->where('dt = (SELECT max(dt) from clasificacion)', NULL, FALSE);
para la subquery.

Y para consultas "complicadas" entonces es mas fácil pasar la consulta sql por query() ...

Gracias.

Saludos.-
  #4 (permalink)  
Antiguo 11/08/2012, 17:20
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: construyendo consulta mysql

Teniendo en cuenta lo limitado que es ActiveRecord en CI, si, debes usar query()
No olvides usar los query bindings. http://codeigniter.com/user_guide/database/queries.html

Código PHP:
Ver original
  1. $sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
  2.  $this->db->query($sql, array(3, 'live', 'Rick'));
__________________
Drupal Argentina

Etiquetas: construccion, framework, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:06.