select de varias tablas

690 views
Skip to first unread message

Juan Guzman

unread,
Jun 26, 2013, 8:37:12 PM6/26/13
to djan...@googlegroups.com
que tal gente!  estoy empezando con django vengo bastante bien pero tengo una duda me gustaria hacer la siguiente consulta que en sql seria  algo asi

SELECT tabla1.*,tabla2.* FROM tabla1,tabla2 ORDER BY id

para poder recorrer en el templete todos los elementos de estas tablas y que me los muestre en que orden me los muestre por fecha y todos mezclados los datos de tabla1 y tabla2 

Rodrigo Bravo

unread,
Jun 26, 2013, 10:33:10 PM6/26/13
to djan...@googlegroups.com
Puedes usar la misma consulta SQL de esta forma:

from django.db import connection
var = connection.cursor()
var.execute("....Consulta sql....")
var2= var.fetchall()

De esta forma ya tienes el resultado de la consulta en la variable var2 (con fetchall te retorna una lista y con fetchone si es un solo objecto.)




--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a django-es+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--
Rodrigo Bravo, Venezuela-Guárico
Ingeniero en Informàtica (unerg)
-IRC = Rodrigo_4k
-Blog = https://4krodrigobravo.wordpress.com/

-Google+: https://plus.google.com/u/0/114460519877664217325
Linux User = #533200

Axel Díaz

unread,
Jun 26, 2013, 10:41:00 PM6/26/13
to djan...@googlegroups.com
Por qué un SQL y no los filtros de Django? No es más sencillo hacerlo por filtros?
Axel Díaz
San Juan de los Morros - Edo. Guárico
http://about.me/axelio
Linux User #531976
Usuario Canaima #1057
Huella de clave = D580 D9A2 41B0 412A E9A5  D778 DB05 8F60 BED7 96FB

Rodrigo Bravo

unread,
Jun 27, 2013, 12:08:08 AM6/27/13
to djan...@googlegroups.com
Como se haría si los modelos no tienen ninguna relación?

Aunque en realidad creo que esa consulta no tiene sentido porque las tablas no tienen ninguna relación y va a mostrar una tabla con datos repetidos si una tabla tiene mas registros que otra.

Ricardo Azpeitia Pimentel

unread,
Jun 27, 2013, 12:30:41 AM6/27/13
to djan...@googlegroups.com
No tengo idea que quieres hacer, pero si quieres hacer eso, usando el orm puedes hacer lo siguiente.

1. Hacer un query a cada modelo.
2. Usar product de itertools

Incluso si lo haces en SQL como tal, se me hace una pesima idea, ya que esto arroja demasiados registros. Supón que tu tabla1 tiene N registros y tabla2 tiene M registros, el resultado siempre va a ser N*M registros.

Estoy casi seguro (un 99%) que lo que tratas de hacer lo puedes hacer de una manera mucho mas elegante.

Sergio

unread,
Jun 27, 2013, 6:34:00 AM6/27/13
to djan...@googlegroups.com
Estoy totalmente de acuerdo con Ricardo. Si haces la consulta así te hará un producto cartesiano. Puedes hacer la propuesta de Ricardo. Porque no puedes relacionar las dos tablas de alguna manera?


 

Juan Guzman

unread,
Jun 27, 2013, 8:40:53 AM6/27/13
to djan...@googlegroups.com

gracias por contestar,
1. puse los * para no tener que escribir la consulta, obvio que no voy a elegir todos los campos para el listado
2. lo que pasa es que el sistema es para cargar oficios de distintos tipos, entonces por ejemplo tengo dos tablas, una solicitud de paradero, y otra secuestro vehicular, pero no tienen nada que ver una con la otra, pero necesito listar todos los registros de esas tablas quedando por ejemplo , que lo hice asi pero en php


monoBOT

unread,
Jun 27, 2013, 12:20:38 PM6/27/13
to djan...@googlegroups.com
Yo cuando tengo que listar temas dispares lo que hago es heredar de un modelo superior.
Por ejemplo:
class Apunte(models.model):
    fecha = bla bla

class Recibo(Apunte):
   propietario = bla bla

class Factura(Apunte):
   empresa = bla bla

No se si me explico lo que hago es heredar de una clase que tiene los atributos generales y comunes que necesito tener de acceso y luego en cada una de las herencias defino los atributos específicos, de esta forma si hago una consulta de apuntes me salen todos y luego si hago una consulta de recibos pues eso solo me salen los recibos. si por ejemplo luego haces un botón de editar la vista que te lo maneje deberá de discriminar si se trata de una u otra clase antes de editar puesto qeu si editas por la clase general solo estarán visibles en el formulario los datos.
Es decir es una buena solución pero tienes que saber lo que estás haciendo en cada momento.


--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a django-es+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--
monoBOT
Visite mi sitio(Visit my site): monobotblog.alvarezalonso.es
Reply all
Reply to author
Forward
0 new messages