¿DÓNDE eso selecciona TODOS?

Tengo una consulta a la que deseo llamar inicialmente para capturar todos los resultados de una base de datos.

Luego, cuando se actualiza un cuadro combinado, deseo que atrape solo las columnas WHERE column = SelectedItemFromComboBox.

Todo está hecho; lo único que me falta es alguna forma de consultar

SELECT *
FROM Table1
WHERE Column1 = ALL;

Para que luego pueda actualizarlo a

SELECT *
FROM Table1
WHERE Column1 = SelectedItemFromComboBox;

¿Para qué puedo configurar inicialmente la cadena? SelectedItemFromComboBoxpara que me devuelva todos los valores?

Gracias.

preguntado el 02 de julio de 12 a las 11:07

Simplemente elimine la cláusula WHERE: select * from Table1;. No use hacks y SQL incorrecto solo para evitar una línea de código en su programa. -

@dystroy La pregunta es cómo lograr eso sin compilar SQL en el lado del cliente. -

@dystroy Esto no funcionaría y no producirá SQL incorrecto. -

@SimonKiely ¿Qué quieres decir con "esto no funcionaría"? Seguramente, omitir la cláusula WHERE le daría todas las filas de la tabla. -

@SimonKiely No lo consideraría (necesariamente) una mala idea de diseño. Yo simplemente estaba tratando de corregir el "esto no funcionaría" parte. :-)-

5 Respuestas

Kit SelectedItemFromComboBox a null y cambie su consulta a

SELECT *
FROM Table1
WHERE Column1 = SelectedItemFromComboBox
or SelectedItemFromComboBox is null

Respondido 02 Jul 12, 11:07

Vale la pena señalar aquí que esto dará como resultado un análisis completo, incluso si se selecciona algo del cuadro combinado. - MatBailie

Puedes poner algo como la cadena vacía en SelectedItemFromComboBox y modifique su consulta:

SELECT *
FROM Table1
WHERE SelectedItemFromComboBox = ''
   OR Column1 = SelectedItemFromComboBox;

Respondido 02 Jul 12, 11:07

SELECT *
FROM Table1
WHERE Column1 = Column1

obtendrá todos los datos

entonces puedes usar un valor nulo

SELECT *
FROM Table1
WHERE Column1 = isnull(some_value, Column1)

donde algún valor es NULL. Para hacer esto, use una cadena vacía y luego esto

SELECT *
FROM Table1
WHERE Column1 = isnull(CASE WHEN some_value = '' then NULL  else some_value end)), Column1)

y esto te devolverá lo que quieres

Respondido 02 Jul 12, 11:07

En esta condición, puede establecer "SelectedItemFromComboBox" en 0 y actualizar la consulta de esta manera, de modo que si la primera condición no coincide, va a la condición OR donde 0 = 0 y devuelve todos los registros para el valor inicial del cuadro combinado.

SELECCIONE * DE la Tabla1

DONDE Columna1 = ElementoSeleccionadoDeComboBox O 0=ElementoSeleccionadoDeComboBox ;

Respondido 02 Jul 12, 11:07

Si por alguna razón no puede modificar la consulta y solo tiene control sobre el valor que ingresa, y no está utilizando consultas parametrizadas, y sabe 100% cómo protegerse contra la inyección de SQL, entonces puede establecer SelectedItemFromComboBox a '' OR 1 = 1. Esto debería ser extremadamente raro y solo necesario si hay un código incorrecto sobre el que no tienes control, y es completamente un truco.

Respondido 02 Jul 12, 11:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.