2010-07-07 5 views
1

쿼리MYSQL 선택 문 조건

SELECT u.deviceID, u.userName, u.contactNo, u.rating 
    FROM User u 
INNER JOIN TaxiQuery t ON u.deviceID = t.seat1 
         OR u.deviceID = t.seat2 
         OR u.deviceID = t.seat3 
         OR u.deviceID = t.seat4 
WHERE t.queryID = 3; 

+--------------------------------------+----------+-----------+--------+ 
| deviceID        | userName | contactNo | rating | 
+--------------------------------------+----------+-----------+--------+ 
| 00000000-0000-1000-8000-0016CB8B3C8E | uuuuuu |  55555 |  5 | 
+--------------------------------------+----------+-----------+--------+ 

사용자를 설명;

+-----------+--------------+------+-----+---------+-------+ 
| Field  | Type   | Null | Key | Default | Extra | 
+-----------+--------------+------+-----+---------+-------+ 
| deviceID | varchar(100) | NO | PRI | NULL |  | 
| userName | varchar(100) | YES |  | NULL |  | 
| contactNo | int(11)  | YES |  | NULL |  | 
| emailAddr | varchar(100) | YES |  | NULL |  | 
| rating | int(11)  | YES |  | NULL |  | 
+-----------+--------------+------+-----+---------+-------+ 

mysql> 설명 taxiQuery; 내가 원하는 무엇

+--------------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+--------------+--------------+------+-----+---------+----------------+ 
| queryID  | int(11)  | NO | PRI | NULL | auto_increment | 
| destination | varchar(100) | YES |  | NULL |    | 
| deptTime  | varchar(100) | YES |  | NULL |    | 
| startingPt | varchar(100) | YES |  | NULL |    | 
| boardingPass | varchar(100) | YES |  | NULL |    | 
| miscInfo  | varchar(100) | YES |  | NULL |    | 
| seat1  | varchar(100) | YES |  | NULL |    | 
| seat2  | varchar(100) | YES |  | NULL |    | 
| seat3  | varchar(100) | YES |  | NULL |    | 
| seat4  | varchar(100) | YES |  | NULL |    | 
+--------------+--------------+------+-----+---------+----------------+ 

은 TaxiQuery에 (seat1/seat2/seat3/seat4)에있는 경우 사용자의 정보를 표시하는 것입니다. 그러나 나는 그들이 3이라고 가정 할 때만 한 결과를 출력 할 수 있습니다.

seat1, seat2, seat3, seat4에 사용자의 deviceID가 포함되어있을 때 (seat1-4가 User 테이블의 deviceID에 대한 외래 키일 때) 사용자 정보를 표시하려면 어떻게해야합니까?

+0

관련 항목 : http://stackoverflow.com/questions/3197322/sql-query-at-least-one-of-something –

답변

0

내가 말할 수있는 한, INNER 조인을하지 않으면 작동합니다. INNER 키워드는 각 소스를 최대 한 번만 포함하도록 mySQL에 알려주므로 실제로는 최대 4 개 (시트 당 하나)가 필요할 때만 TaxiQuery 사본 하나만 사용합니다.

+0

DISTINCT를 사용하거나 GROUP BY 절을 정의하면 내부 조인이 작동합니다. 그렇지 않으면 상관 된 하위 쿼리를 사용해야합니다. –