문제

다음과 같은 쿼리를 작성해야 합니다.

SELECT PNPDeviceID FROM Win32_NetworkAdapter WHERE AdapterTypeId = 0

문제는 AdapterTypeId 열이 항상 존재하지 않는다는 것입니다.이 경우에는 다음과 같이 모든 것을 원합니다.

SELECT PNPDeviceID FROM Win32_NetworkAdapter

내 WQL/SQL 지식은 극히 제한적입니다.아무도 단일 쿼리로 이 작업을 수행하는 방법을 말해 줄 수 있습니까?

편집하다:
좀 더 많은 배경 지식이 필요한 것 같습니다.SQL과 유사한 구문을 사용하는 WMI를 사용하여 Windows에서 장치 정보를 쿼리하고 있습니다.따라서 제 예에서는 AdapterTypeId가 0인 네트워크 어댑터를 쿼리합니다.
그러나 해당 열이 항상 존재하는 것은 아닙니다. 즉, 반환된 값을 열거하면 "AdapterTypeId"가 나열되지 않습니다.

편집 2:
SQL을 WQL로 변경했습니다.분명히 이것이 더 정확합니다.

도움이 되었습니까?

해결책

기본 스키마가 신뢰할 수 없다는 의미라고 가정합니다.

이는 매우 특이한 상황입니다.열이 항상 존재하지 않는 문제를 해결하는 것이 좋습니다. 응용 프로그램 아래에서 스키마를 동적으로 변경하는 것은 잠재적으로 (거의 확실하게) 재앙이 될 수 있기 때문입니다.

업데이트:

좋습니다. WQL을 사용하면 SQL과 유사한 구문으로 개체를 쿼리할 수 있지만 SQL과 달리 스키마는 사용자가 직접 변경할 수 있습니다.이것은 전형적인 예이다. 누출된 추상화, 그리고 나는 지금까지 WQL을 사용해본 적도 없이 WQL을 싫어합니다 :).

사용 가능한 속성은 유동적이므로 WQL은 특정 어댑터의 속성을 열거하는 방법을 제공한다고 추측됩니다.이렇게 하고 결과에 따라 실행할 쿼리를 선택하세요.

인터넷 검색 후 예가 있습니다. 여기, 사용 가능한 속성을 열거하는 방법을 보여줍니다.이를 사용하여 다음 사항을 결정할 수 있습니다. AdapterTypeId 존재하든 존재하지 않든.

다른 팁

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

이 필드가 테이블에서 누락되었다고 생각합니다. 이 필드가 존재하는 경우 쿼리를 제출하기 전에 알고 있습니까? 예가면 SQL을 동적으로 만듭니다. 그렇지 않으면 필드가 누락 된 경우 구문 오류가 발생한다고 생각합니다.

이것은 SQL 질문이 아닙니다. SQL은 단일 테이블 소스에서 다양한 스키마로 레코드를 고려하지 않습니다. 대신 (당신이 언급했듯이) 이것은 "SQL 유사"구문을 사용하는 다른 시스템입니다. 쿼리하려는 실제 제품을 사용하여 질문을 재발하고 해당 제품이 가변 레코드 구조를 어떻게 처리하는지 정보를 문서에서 논의하면 더 나은 행운을 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top