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

[SOLUCIONADO] Consulta a SQL más de 2 tablas

Estas en el tema de Consulta a SQL más de 2 tablas en el foro de SQL Server en Foros del Web. Antes que nada, les cuento, no es una tarea escolar sino una prueba de una entrevista laboral que tuve que no pude resolver, se cosas ...
  #1 (permalink)  
Antiguo 07/06/2013, 11:42
Avatar de leasl  
Fecha de Ingreso: junio-2013
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Consulta a SQL más de 2 tablas

Antes que nada, les cuento, no es una tarea escolar sino una prueba de una entrevista laboral que tuve que no pude resolver, se cosas de SQL pero muy básico y bueno quiero sacar algo positivo de una entrevista fallida para que en la próxima no me pase esto.
En la facultad no llegué a hacer consultas a este nivel no es por vago.


Las tablas eran más o menos esta:

Tipo_de_cliente: ID (PK), Descripción
Cliente: ID (PK), Nombre, Apellido, Email, Razón Social, blabla
Pedido: ID (PK), ID_Cliente (FK), Fecha
Pedido_Articulo: ID_Pedido, ID_Articulo, Cantidad
Articulo: ID (PK), Descripción, Precio

La relación (las flechas como iba no se si le llamaran relación).

Pedido >>>>>>>>>>>>> Pedido_Articulo<<<<<<<<<<< Articulo
<<<<<<<<<<<<< >>>>>>>>>>>
_______

Pedido >>>>>>>>>>> Cliente >>>>>>>>>>> Tipo_de_cliente

En las consultas había una que me pedía que mostrar el Nombre, Apellido,Email y Razón Social de los clientes del tipo "Residencial" (estaría en la Descripción de la tabla Tipo_Cliente) que hayan realizado más de 10 pedidos.

Yo hice varios Inner Join pero tuve una animalada poniendo un count(pedido.id)>10 en el where jajajajaja. ¿Cómo tendría que haber echo?

Otra que no me salio, que ni la empece a hacer, suponía multiplicar Cantidad por Precio estando en tablas distintas ¿Eso como se hace?.

Bueno desde ya gracias.
  #2 (permalink)  
Antiguo 07/06/2013, 11:55
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta a SQL más de 2 tablas

de plano es sql muy basico el que manejas y las preguntas de la entrevista pues son las normales a mi me toco hacer una entrevista donde hacias una tabla pivote ;) jejejeje pero bueno respondiendo a tu pregunta:

Código SQL:
Ver original
  1. SELECT nombre,apellido,email, razon_social FROM clientes AS t1
  2. LEFT JOIN tipo_cliente AS t2 ON (t1.id=t2.id)
  3. LEFT JOIN pedido AS t3 ON (t1.id=t3.id_cliente)
  4. WHERE t2.tipo='residencial' AND COUNT(t3.id_cliente)>10
no veo la animalada...como crees que debes de obtener los clientes con mas de 10 pedidos?

y lo de cantidad por precio:
Código SQL:
Ver original
  1. SELECT t2.articulo, t1.cantidad * t2.precio FROM pedido_articulo AS t1
  2. LEFT JOIN articulo AS t2 ON (t1.id_articulo=t2.id)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 07/06/2013, 12:26
Avatar de leasl  
Fecha de Ingreso: junio-2013
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Consulta a SQL más de 2 tablas

A no yo tenia un compañero que me dijo que eso no se podía hacer. Lo hice usando Inner Join ¿funcionaba igual la primera consulta?

Ahora si en la segunda tenías que sacar el producto que más recaudo como tendría que haber sido (porque creo que iba para ahí la consulta según recuerdo).
  #4 (permalink)  
Antiguo 07/06/2013, 12:58
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta a SQL más de 2 tablas

left, inner join.....para mas detalles busca en google :P jejejeje,

en la segunda consulta si es para ver cuales productos vendieron mas puede quedar:


Código SQL:
Ver original
  1. SELECT top 1 articulo, vendido FROM (
  2. SELECT t2.articulo, (t1.cantidad * t2.precio) AS vendido FROM pedido_articulo AS t1
  3. LEFT JOIN articulo AS t2 ON (t1.id_articulo=t2.id)) AS t3 ORDER BY vendido ASC
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 07/06/2013, 22:30
Avatar de leasl  
Fecha de Ingreso: junio-2013
Mensajes: 14
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Consulta a SQL más de 2 tablas

A ver si entendí el código.

Haces una consulta pidiendo el articulo que más se vendió y la cantidad, todo eso sale (el from) de otro select (¿sería una subconsulta?) ahí seleccionas el articulo (que después vamos a mostrar) y la cantidad vendida que sale de ese calculo y lo llamas "vendido". Esto último sale de la tabla pedido_articulo y unís esa tabla con articulo bajo la condición de que las "id" sean iguales. Después según la cantidad vendida se ordena ascendentemente.

Eso fue lo que entendí, ahora por qué

Código SQL:
Ver original
  1. LEFT JOIN articulo AS t2 ON (t1.id_articulo=t2.id)) AS t3

No entendí porque le das un alias.

Última edición por leasl; 07/06/2013 a las 22:49
  #6 (permalink)  
Antiguo 08/06/2013, 19:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta a SQL más de 2 tablas

porque en una tabla tienes los precios del articulo y en otra las cantidades vendidas :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: sql
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 13:32.