Foros del Web » Programando para Internet » Python »

Query a varias tablas

Estas en el tema de Query a varias tablas en el foro de Python en Foros del Web. Que tal, tengo 3 tablas distintas (negocio, sucursales y horario) Sucursales y Horarios tienen "ForeignKey(negocio)", así que puedo acceder desde horario a negocio, o de ...
  #1 (permalink)  
Antiguo 17/07/2012, 21:45
Avatar de _Ju
_Ju
 
Fecha de Ingreso: noviembre-2008
Ubicación: Colima, MX
Mensajes: 192
Antigüedad: 16 años
Puntos: 6
Query a varias tablas

Que tal, tengo 3 tablas distintas (negocio, sucursales y horario)

Sucursales y Horarios tienen "ForeignKey(negocio)", así que puedo acceder desde horario a negocio, o de sucursales a negocios con "objects.all()".

El problema es que deseo hacer una consulta de varios registros (negocios) con todas sus tablas y así mostrarlo; pero no veo como se pueda hacer.

Se agradece la ayuda
__________________
www.grupogalco.net

Twitter: @jugalvez
  #2 (permalink)  
Antiguo 18/07/2012, 19:23
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Query a varias tablas

No entendí bien la ultima parte, ¿quieres obtener todos los negocios y dejar solo los que tengan ciertos horarios o sucursales?

Puedes exponer un poco mejor tu pregunta y tal vez poner un ejemplo.
  #3 (permalink)  
Antiguo 18/07/2012, 22:32
Avatar de _Ju
_Ju
 
Fecha de Ingreso: noviembre-2008
Ubicación: Colima, MX
Mensajes: 192
Antigüedad: 16 años
Puntos: 6
Respuesta: Query a varias tablas

Ok, lo que quiero hacer es algo como:

Código PHP:
SELECT negocio.nombrehorario.diasucursal.domicilio WHERE negocio.id=horario.id_negocionegocio.id=sucursal.id_negocio 
__________________
www.grupogalco.net

Twitter: @jugalvez
  #4 (permalink)  
Antiguo 18/07/2012, 23:11
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Query a varias tablas

Puedes usar:
Código Python:
Ver original
  1. Negocios.objetcs.values('nombre', 'sucursal', 'horario')

O puedes hacer lo siguiente:
Código Python:
Ver original
  1. negocio = Negocios.objetcs.get(pk=0)
  2. negocio.sucursal_set.all()
  3. negocio.domicilio_set.all()
  #5 (permalink)  
Antiguo 20/07/2012, 09:22
Avatar de _Ju
_Ju
 
Fecha de Ingreso: noviembre-2008
Ubicación: Colima, MX
Mensajes: 192
Antigüedad: 16 años
Puntos: 6
Respuesta: Query a varias tablas

Gracias por el dato, al final lo mejor en este caso es usar "_set.all"; probando y demás, logre mostrar los resultados; con algo así:

Código Python:
Ver original
  1. {% for empresa in empresas %}
  2.     {% for sucursal in empresa.sucursal_set.all %}
  3.          {% for horario in empresa.horario_set.all %}
  4.             <p>
  5.                empresa.slogan<br />
  6.                empresa.descripcion<br />
  7.                horario.foobar<br />
  8.            </p>
  9.         {% endfor %}
  10.    {% endfor %}
  11. {% endfor %}

Muestra los resultados perfectamente, justo como lo necesito; pero ¿Que pasa cuando quiero aplicar un filtro? Por ejemplo: Solo mostrar los negocios que hábran en domingo

Código Python:
Ver original
  1. horario.dia='Domingo'

Como aplicar ese filtro sin caer en esto:

Código Python:
Ver original
  1. {% for empresa in empresas %}
  2.     {% for sucursal in empresa.sucursal_set.all %}
  3.          {% for horario in empresa.horario_set.all %}
  4.              {% if horario.dia='Domingo' %}
  5.                 <p>
  6.                    empresa.slogan<br />
  7.                    empresa.descripcion<br />
  8.                    horario.foobar<br />
  9.                </p>
  10.              {% endif %}
  11.         {% endfor %}
  12.    {% endfor %}
  13. {% endfor %}

Gracias por todo
__________________
www.grupogalco.net

Twitter: @jugalvez

Etiquetas: django
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 15:58.