2010-07-07 132 views
1

查詢:MYSQL select語句條件

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> describe 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 |    | 
+--------------+--------------+------+-----+---------+----------------+ 

我想要的是如果他們(seat1/seat2/seat3/seat4)在TaxiQuery存在來顯示用戶的信息。但是,當他們假設爲三時,我只能輸出一個結果。

可以知道當seat1,seat2,seat3,seat4包含用戶的deviceID時(seat1-4是用戶表的deviceID的外鍵)時,如何修改mysql語句以顯示用戶信息?

+0

相關:http://stackoverflow.com/questions/3197322/sql-query-at-least-one-of-something – 2010-07-07 21:46:56

回答

0

據我所知,它應該工作,如果你不做INNER加入。我認爲INNER關鍵字告訴mySQL最多隻包含一次源,因此當您實際需要最多四個(每個座位一個)時,它只會使用一個TaxiQuery副本。

+0

如果您使用DISTINCT或定義GROUP BY子句,則內部聯接將起作用。否則,您需要使用相關的子查詢... – 2010-07-07 21:55:09