Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

No entiendo esta consulta!!

Estas en el tema de No entiendo esta consulta!! en el foro de Bases de Datos General en Foros del Web. Hola chicos, estoy modificando un script y me encontre con esto. mas que todo no entiendo que es el "c." o "p." que tienen antes ...
  #1 (permalink)  
Antiguo 28/05/2010, 09:42
 
Fecha de Ingreso: enero-2010
Mensajes: 17
Antigüedad: 14 años, 3 meses
Puntos: 0
No entiendo esta consulta!!

Hola chicos, estoy modificando un script y me encontre con esto.
mas que todo no entiendo que es el "c." o "p." que tienen antes del nombre del campo.
Código PHP:
         c.imagen,
          
c.producto,
          
p.subcategoria,
          
s.categoria
y esto
Código PHP:
 (select nombre from banners_idiomas where padre c.codigo and idioma $idiomatitulo
porfa si alguien me puede dar una ayudita le agredeceria mucho!!

Aqui esta toda la consulta.
Código PHP:
$sql="select
          c.imagen,
          c.producto,
          p.subcategoria,
          s.categoria,
          (select nombre from banners_idiomas where padre = c.codigo and idioma = $idioma) titulo,
          (select descripcion from banners_idiomas where padre = c.codigo and idioma =  $idioma) texto,
          (select nombre from subcategorias_idiomas where padre = p.subcategoria and idioma =  $idioma and activo = 1) subcat
    from banners c
    left join banners_idiomas ci
    on ci.padre = c.codigo
    left join productos p
    on p.codigo = c.producto
    left join subcategorias s on p.subcategoria = s.codigo
    left join categorias ca on ca.codigo = s.categoria
    where c.activo=1
    group by ci.padre"

  #2 (permalink)  
Antiguo 28/05/2010, 09:48
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: No entiendo esta consulta!!

y si sabes que es una consulta SQL por que preguntas en el foro de PHP ?
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 28/05/2010, 09:54
 
Fecha de Ingreso: enero-2010
Mensajes: 17
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: No entiendo esta consulta!!

Si, lo que quiero saber es que significa los "c." , "p." que estan antes de decir el nombre del campo, no estoy familiarizado con ese tipo de consultas!
  #4 (permalink)  
Antiguo 28/05/2010, 09:58
 
Fecha de Ingreso: enero-2010
Mensajes: 17
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: No entiendo esta consulta!!

Upss!! mira encerio perdon!! como me traslado?
  #5 (permalink)  
Antiguo 28/05/2010, 09:59
Avatar de Nekeniehl  
Fecha de Ingreso: julio-2009
Ubicación: Berlin, Alemania / Granada, España
Mensajes: 132
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: No entiendo esta consulta!!

Es una alias para la tabla de SQL... en tu consulta y de ejemplo te dire que banners es la c ergo para llamar a un campo de esa tabla se pone c.campo como ves en tu script...
Esto no debe de ir en php.
__________________
Antes de cambiar el mundo...dá tres vueltas por tu casa

Usa Google es tu amigo ;)
  #6 (permalink)  
Antiguo 28/05/2010, 10:04
 
Fecha de Ingreso: enero-2010
Mensajes: 17
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: No entiendo esta consulta!!

Gracias Nekeniehl , si me equivoque Gracias!!
  #7 (permalink)  
Antiguo 28/05/2010, 10:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Tema movido desde PHP a Bases de Datos
  #8 (permalink)  
Antiguo 28/05/2010, 10:19
 
Fecha de Ingreso: enero-2010
Mensajes: 17
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: No entiendo esta consulta!!

Sabe q Nekeniehl Muchisimas gracias ahora si me trabajo al entender eso! Mil Gracias!!
  #9 (permalink)  
Antiguo 28/05/2010, 11:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No entiendo esta consulta!!

"c" y "p" son alias para referirse a una tabla. Los alias se usan para simplificar l nombre de una base, una tabla o un campo, sustituyendo su nombre por el del alias.
Es muy práctico para simplificar el código de una consulta, así como también suplantar el nombre de un campo por un texto mejor descriptivo, que luego puede usarse simplemente en el mostrado de la tabla resultante.
La consulta que te ocupa remplaza incluso las subconsultas en los valores del SELECT por unalias::
Código MySQL:
Ver original
  1.           c.imagen,
  2.           c.producto,
  3.           p.subcategoria,
  4.           s.categoria,
  5.           (SELECT nombre FROM banners_idiomas WHERE padre = c.codigo AND idioma = $idioma) titulo,
  6.           (SELECT descripcion FROM banners_idiomas WHERE padre = c.codigo AND idioma =  $idioma) texto,
  7.           (SELECT nombre FROM subcategorias_idiomas WHERE padre = p.subcategoria AND idioma =  $idioma AND activo = 1) subcat
  8.           banners c LEFT JOIN banners_idiomas ci ON ci.padre = c.codigo
  9.           LEFT JOIN productos p ON p.codigo = c.producto
  10.           LEFT JOIN subcategorias s ON p.subcategoria = s.codigo
  11.           LEFT JOIN categorias ca ON ca.codigo = s.categoria
  12.           c.activo=1
  13. GROUP BY ci.padre
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 28/05/2010, 11:20
 
Fecha de Ingreso: enero-2010
Mensajes: 17
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: No entiendo esta consulta!!

Hola gnzsoloyo gracias!!

solo una cosita en esta parte

Código PHP:
(SELECT nombre FROM banners_idiomas WHERE padre c.codigo AND idioma $idiomatitulo
al final dice "titilo" despues de los parentesis que significa todo eso por que se hace una consulta entre () y al final "titulo"

Gracias
  #11 (permalink)  
Antiguo 28/05/2010, 12:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No entiendo esta consulta!!

Exacto.
Eso es una subconsulta que se ejecuta una vez por cada línea devuelta por la consulta principal (es bastante ineficiente), y como lo que pongas en el select actúa como encabezado de columna, si lo dejas así el encabezado contendría un texto con "SELECT nombre FROM banners_idiomas WHERE padre = c.codigo AND idioma = $idioma", lo cual es obviamente engorroso, entonces se le pone un alias, en este caso "titilo", para que ese sea el encabezado de esa columna.
Toas estas cosas se ven mejor al ejecutar directamente las consultas en SQL, por ejemplo, con el phpMyAdmin.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 07:02.