2013-07-16 2 views
0

나는 이것을 묻는 방법을 모르지만 한 번 해보도록하겠습니다.여러 레코드가 하나의 열과 일치하지만 다른 열의 필터가 일치합니다.

테이블이 있는데 위젯이라고 부릅니다. 각 위젯에 대한이 표에는 다양한 데이터가 포함 된 여러 레코드가 있지만이 위젯의 ​​각 레코드에는 동일한 위젯 식별자가 있습니다.

레코드 중 하나에 다른 특정 데이터가있는 경우에만이 위젯을 선택할 수 있습니까?

예 :

--------------------------------- 
| widgetid | status    | 
|-------------------------------- 
| 54345 | added to inventory | 
|-------------------------------| 
| 54345 | sold    | 
|-------------------------------| 
| 58879 | added to inventory | 
--------------------------------- 

그래서, 위의 표에서, 나는 단지 그것을 상태 "판매"일치있는 유일한 하나부터 54,345 위젯을 선택 완 것이다.

여기서 문제는 동적으로 생성 되었기 때문에 쿼리 당시 위젯 ID를 알 수 없다는 것입니다.

나는 기념비적으로 어리석은 것을 놓치고있다. 그러나 잠시 뒤죽박죽을 보내고 아무런 도움이 필요 없다고 생각할 때, 나는 그것을 밖으로 버리고 좋은 사람들이 생각하는 것을 볼 시간이라고 생각했다.

중요한 점은 MySQL을 사용하는 것입니다. 당신이

+3

'상태 FROM은 widgetid SELECT = '여기 – DevZer0

+0

라운드 sold'', 당신은 당신이 그 위젯의 다른 행을 반환하지 않습니다 ;-) – Strawberry

답변

1
SELECT widgetid FROM widgets WHERE status= 'sold' 

이 그것을 할 수 :

SELECT widgetid 
FROM widgets 
WHERE status='sold' 
+0

를 요청 것을 얻을하는 경향이있다. – Barmar

+0

SELECT * FROM widgets WHERE status = 'sold' – Wishnu

+0

여전히 첫 번째 행을 반환하지 않습니다. – Barmar

5
SELECT w1.* 
FROM Widgets w1 
JOIN Widgets w2 
ON w1.widgetid = w2.widgetid 
WHERE w2.status = "sold" 
+0

시도해 보시고, 시험해보기에 약간의 시간이 필요합니다. 감사합니다 – Todd

0

그냥 이것을 시도에 대한

+0

이것은 해당 위젯의 다른 행을 반환하지 않습니다. – Barmar

+0

네, 그 생각은 ... 그 다음에해야합니다 - SELECT * From ... @Barmar ..를 가리키는 고맙습니다. :) – Novice

0

DevZer0의 솔루션뿐만 아니라 버그는 또한 것만을 리턴 (테이블 이름이 없습니다) 포함 "판매 된"상태의 기록. 나는 당신이 "판매 된"상태 인 widgetid를 가진 모든 레코드를 따라 간다고 가정합니다. 이 시도 :

SELECT * FROM widgets WHERE widgetid IN (SELECT widgetid FROM widgets WHERE status = 'sold') 
+0

MySQL은'WHERE ... IN (SELECT'가 좋지 않습니다.)' JOIN' 솔루션 – Barmar

+0

이 설정을 사용하려면 설정에 적응하는 데 약간의 시간이 필요합니다. 어떻게 작동하는지 알려줍니다. 모든 빠른 답변을 모두 제공해 주셔서 감사합니다. – Todd

+0

Barmar가 맞을 수 있습니다. PostgreSQL, Oracle 및 MSSQL은 내 문장을 최적화하는 데 아무런 문제가 없지만 Barmar는 MySQL이 분명히 가지고 있다는 것을 나타내므로, MySQL과 동일한 기능을 수행합니다. . – Roebie

관련 문제