2012-01-29 2 views
-1

를 구축 도움이 필요합니다.그래서 내가 열이있는 테이블이 MySQL의 SELECT 쿼리

그것은 다음과 같이 보일 것입니다 :

101, "cardofblahblah", 3, "main" 
101, "differentcard", 2, "main" 
102, "cardofblahblah", 1, "main" 
102, "fictionalcard", 3, "main" 
102, "madeupcard", 4, "main" 
103, "magicalcard", 2, "main" 
103, "trickcard", 3, "main" 
... 
... 

은 그래서 내 데이터베이스의 모습입니다. 내가 필요한 것은 내가 지정한 모든 카드를 포함하는 갑판의 갑판 ID를 반환 할 선택 쿼리입니다. 예를 들어, "madeupcard"사본 1 부와 "cardofblahblah"사본 3 부를 포함하는 갑판이 필요합니다. 그것이 실제로 필요한 것이지만 누군가가 또한 내가 할 수있는 방법을 언급한다면> 또는 < 그냥 금액을 설정하는 대신 좋은 것입니다.

나는 쿼리를 수행하는 방법을 알고 있지만 이렇게 복잡한 것을 작성하는 것은 저를 곤경에 빠뜨립니다.

도움을 주셔서 감사합니다. '

EDIT : 명확히하기 위해, 내가 지정한 모든 카드가 포함 된 데크의 ID를 찾고 있습니다. 예를 들어, "갑판에는 cardofblahblah의 사본 3 개와 madeupcard의 사본 1 장이 들어 있습니까?"

갑판의 ID를 얻을 수있는 모든 종류의 출력이 좋습니다. 갑판 이드를 얻는 것이 나를위한 주요 관심사입니다.

EDIT2 : 그래서 다른 다양한 주제를 다룬 후에 해결책을 찾았습니다. 그러나 가장 효율적인 쿼리가 없을 수도 있습니다. 따라서 누군가가 그것을 향상 시키면 좋을 것입니다.

SELECT table1.deck_id, table2.deck_id FROM decklist AS table1 
    JOIN (SELECT * FROM decklist WHERE card_name = "cardofblahblah" AND quantity = 3) 
    AS table2 ON table1.deck_id = table2.deck_id 
    WHERE table1.card_name = "madeupcard" AND quantity = 1;" 

EDIT3 : Telarian에 감사합니다. 그는 나에게 더 나은 질의를했다.

SELECT * 
FROM myTable 
WHERE ((board='madeupcard' AND quantity=1) OR (board='cardofblahblah' AND quantity=3)) 

이 당신이 원하는 경우 알려줘 코드 아래

SELECT t.deck_id 
FROM decklist t 
INNER JOIN decklist l 
    ON l.deck_id = t.deck_id 
WHERE (t.card_name = "madeupcard" AND t.quantity >= 1) 
     AND 
     (l.card_name = "cardofblahblah" AND l.quantity >= 3) 
+0

은이어야 시도하고 다시 여기에 당신은 아무것도하지 않았을 때 얻을 ... –

+1

내가 당신의 질문에 추가 한'SQL-일치 all' 태그를 참조하십시오. 이런 유형의 질문은 여러 번 대답되었습니다. –

+0

> = 연산자는 물론 원하는 다른 연산자에 대해 변경 될 수 있습니다. 그래도 사용하기를 원할 것 같습니다. –

답변

2

...

다음 검색어로 원하는 것을 얻을 수 있습니까?

SELECT t.deck_id 
FROM decklist t 
    INNER JOIN decklist l 
     ON l.deck_id = t.deck_id 
WHERE (t.card_name = "madeupcard" AND t.quantity >= 1) 
     AND 
     (l.card_name = "cardofblahblah" AND l.quantity >= 3) 
+0

아니, 그게 나에게 "madeupcard"및/또는 "cardofblahblah"로 모든 데크를주는 것 같습니다. 나는 둘 다로 만 모든 갑판을 필요로한다. – user594044

+0

ypercube 비교 연산자에 대한 호출이 좋습니다. –

+0

아니, 네가 틀렸어. "madeupcard"및/또는 "cardofblahblah"가있는 데크는 보이지 않습니다.그것은 "madeupcard"와 "cardofblahblah"모두를 가진 갑판만을 보여준다. –

0

시도 ... 그것은되는 방식으로 과도하게 복잡이 보인다

+0

정확하지 않습니다. 목록에있는 카드가 모두 들어있는 덱에 덱 ID가 필요합니다. 당신이 만든 카드에는 그 카드가 들어있는 카드 더미가 표시 될 것입니다. "madeupcard"와 "cardofblahblah"가 모두 들어있는 카드 더미가 있어야합니다. – user594044

+0

그에 따라 질문을 업데이트하십시오. 또한 어떤 입력이 나오고 예상되는지를 알려주십시오 ... –