SQL - Cláusula IN condicionales

 
Vista:

Cláusula IN condicionales

Publicado por María (1 intervención) el 29/01/2021 05:25:45
Hola chicos gusto saludarlos. Es la primera vez que posteo en este foro y es por que estoy haciendo un pequeño proyecto con un par de amigos. No somos muy expertos en SQL Server y considero que conocemos lo básico y al enfrentarnos con una consulta que requerimos para obtener cierta información, nos dimos a la tarea de investigar en internet pero no hemos logrado el resultado esperado.

Tenemos dos tablas. Una de de Autos, donde viene información del auto como Id, código, Nombre, Serie, NumMotor

Y la tabla de ClasificaAuto, con los campos Linea, Marca y Modelo. La línea es por ejemplo si es un carro de lujo, austero, etc. La marca por ejemlo Mazda, WW, VMW, etc. y el modelo por ejemplo 2020,2021. Mi consulta me debe obtener aquellos productos que cierta información dada de la línea, la marca y el modelo. La consulta nos regresa la información sin problemas cuando los 3 parámetros contienen información, pero cuando no contiene información, nos regresa informción pero no es la que nos debe regresar. Por ejemplo, si queremos obtener aquellos Autos de la línea "Lujo", me debe arrojar los autos de lujo, pero si también queremos que de los de lujo nos obtenga los de la marca Mazda, me debe dar los autos de lujo de la marca mazda, pero si sólo envío como parámetro los de la marca WW, me debe traer todos los que contengan esa clasificación sin importar la linea y modelo. Estos parámetros los enviamos desde una aplicación cliente y si no envía parámetros debe ser una cadena vacía, ya que es un reporte donde el usuario irá seleccionando por los 3 niveles que son la linea marca y modelo y con base a la selección del usuario, debemos presentar la información.

Mi consulta:

1
2
3
4
5
6
7
8
declare @lineaAuto varchar(500)='Lujo',
declare @marcaAuto varchar(500)='Ferrari',
declare @modeloAuto varchar(500)='Austero',
 
Select A.Linea,A.Marca,A.Modelo from Autos A
WHERE A.Linea IN(@lineaAuto)
AND A.Marca IN(@marcaAuto)
AND A.Modelo IN(@modeloAuto)
Ayer vimos un caso similar en este foro donde le recomiendan al usuario incluir dentro de cada and un OR validando el valor null pero tampoco nos función. Espero me puedan ayudar y de antemano les doy las gracias

Muchos saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Cláusula IN condicionales

Publicado por anonymous (43 intervenciones) el 29/01/2021 13:36:17
Lo que se observa es que están condicionando el resultado si cumple con tres condiciones (Linea, Marca y Modelo), luego el query devuelve solo los que cumplan con esos criterios, es imposible que si le dije IN (XX) me muestre otro registro que no cumpla con ese IN (XX).

No se si me hice entender.

Pero si ustedes lo que desean es ver un conglomerado de registros a modo de resumen y que no excluya registros, deben hacer un agrupamiento por esas tres columnas (Group By Linea, Marca, Modelo)

Para que de esa forma se sepa cuantos hay de cada uno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Cláusula IN condicionales

Publicado por Isaias (1921 intervenciones) el 29/01/2021 16:11:04
Dígame si esto le funciona

1
2
3
4
5
Select A.Linea,A.Marca,A.Modelo
from Autos A
WHERE A.Linea LIKE '%' + @lineaAuto + '%'
AND A.Marca LIKE '%' + @marcaAuto + '%'
AND A.Modelo LIKE '%' + @modeloAuto + '%'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar