Pregunta

Necesito hacer una consulta como la siguiente:

SELECT PNPDeviceID FROM Win32_NetworkAdapter WHERE AdapterTypeId = 0

El problema es que la columna de la AdapterTypeId no siempre está presente. En este caso, sólo quiero todo, de este modo:

SELECT PNPDeviceID FROM Win32_NetworkAdapter

Mi conocimiento WQL / SQL es extremadamente limitada. Alguien puede decirme cómo hacer esto en una sola consulta?

EDIT:
Un poco más de fondo parece ser necesaria: yo estoy consultando Windows para obtener información del dispositivo mediante WMI, que utiliza una sintaxis SQL. Por lo tanto, en mi ejemplo, yo estoy consultando para los adaptadores de red que tienen una AdapterTypeId de 0.
Esa columna no está siempre presente, sin embargo, lo que significa que si enumero a través de los valores devueltos luego "AdapterTypeId" no está en la lista.

EDIT 2:
Cambiado SQL para WQL; aparentemente esto es más correcta.

¿Fue útil?

Solución

Estoy asumiendo que quiere decir el esquema subyacente no es fiable.

Esta es una situación muy poco convencional. Le sugiero que resolver el problema que está causando la columna a no ser siempre presente, porque para tener el esquema de cambiar dinámicamente por debajo de su aplicación es potencialmente (casi seguro) desastroso.

Actualización:

OK, así WQL permite consultar los objetos con una sintaxis similar a SQL, pero, a diferencia de SQL, el esquema puede cambiar por debajo de sus pies. Este es un ejemplo clásico de un fugas abstracción , y ahora lo odio WQL sin haber usado :.)

Dado que las propiedades disponibles están en flujo, que supongo que WQL proporciona una forma de enumerar las propiedades de un adaptador dado. Haz esto, y elegir la consulta se ejecute dependiendo de los resultados.

Después de algún Googling, no es un ejemplo aquí , que muestra cómo enumerar a través de las propiedades disponibles. Usted puede usar esto para determinar si existe o no AdapterTypeId.

Otros consejos

SELECT PNPDeviceID FROM Win32_NetworkAdapter WHERE AdapterTypeId = {yourDesire} OR AdapterTypeId IS NULL

Asumo que quiere decir que este campo no se encuentra en la tabla. Sabes antes de enviar la consulta si existe este campo? Si sí, entonces basta con crear SQL de forma dinámica, de lo contrario, creo que obtendrá error de sintaxis en caso de falta de campo

Esto no es una cuestión de SQL. SQL no contempla los registros con diferentes esquemas en una sola fuente de la tabla. En su lugar (como se menciona) este es un sistema diferente, utilizando una sintaxis "tipo SQL". Tendrá mejor suerte si refundición la cuestión de usar el producto real que usted está tratando de consultar, y la información que la forma en ofertas de productos con estructuras de registro variable es probable que discuten en la documentación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top