Domanda

Ho bisogno di fare una query come questa:

SELECT PNPDeviceID FROM Win32_NetworkAdapter WHERE AdapterTypeId = 0

Il problema è che la colonna AdapterTypeId non è sempre presente. In questo caso, voglio solo tutto, in questo modo:

SELECT PNPDeviceID FROM Win32_NetworkAdapter

La mia conoscenza WQL / SQL è estremamente limitata. Qualcuno può dirmi come fare questo in una singola query?

EDIT:
Un po 'più di fondo sembra essere richiesta: Sto interrogazione di Windows per informazioni sul dispositivo tramite WMI, che utilizza una sintassi SQL-like. Così, nel mio esempio, io sono l'esecuzione di query per schede di rete che hanno un AdapterTypeId 0.
Quella colonna non è sempre presente però, nel senso che se io enumerare i valori restituiti poi "AdapterTypeId" non è elencato.

EDIT 2:
Cambiato SQL per WQL; pare questo è più corretto.

È stato utile?

Soluzione

Io parto dal presupposto che intende lo schema di fondo è inaffidabile.

Questa è una situazione altamente non convenzionale. Vi suggerisco di risolvere il problema che sta causando la colonna di non essere sempre presente, perché per avere lo schema cambia dinamicamente sotto la vostra applicazione è potenzialmente (quasi certamente) disastroso.

Aggiornamento:

OK, quindi WQL ti permette di interrogare gli oggetti con una sintassi SQL-like, ma, a differenza di SQL, lo schema può cambiare sotto i vostri piedi. Questo è un classico esempio di un che perde l'astrazione , e io ora odio WQL senza aver mai usato :).

Poiché le proprietà disponibili sono in continuo mutamento, sto indovinando che WQL fornisce un modo per enumerare le proprietà per un determinato adattatore. Fate questo, e scegliere quali query da eseguire a seconda dei risultati.

Dopo qualche Googling, non v'è un esempio qui , che mostra come enumerare attraverso le proprietà disponibili. È possibile utilizzare questo per determinare se AdapterTypeId esiste o meno.

Altri suggerimenti

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

presumo che vuoi dire che questo campo non è presente nella tabella. Sai, prima di presentare la domanda se esiste questo campo? Se sì allora basta creare SQL dinamico, altrimenti credo che si otterrà errore di sintassi nel caso di campo mancante

Questa non è una domanda di SQL. SQL non prevede registrazioni con vari schemi in una singola fonte tavolo. Invece (come si parla) si tratta di un sistema diverso utilizzando una sintassi "SQL-like". Avrete più fortuna se si riformulare la domanda utilizzando il prodotto reale che si sta cercando di interrogare, e informazioni su come che si occupa di prodotti con strutture di record variabili è probabilmente discusso nella documentazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top