2010-07-07 133 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