2010-07-07 4 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 |    | 
+--------------+--------------+------+-----+---------+----------------+ 

Что я хочу, чтобы отобразить информацию пользователя, если они существуют в (место1/seat2/seat3/seat4) в TaxiQuery. Но я могу только вывести один результат, когда они предположительно будут тремя.

Могу ли я изменить инструкцию mysql, чтобы отображать информацию пользователя, когда (seat1-4 является внешним ключом к идентификатору устройства пользователя таблицы), когда seat1, seat2, seat3, seat4 содержит идентификатор устройства пользователей?

+0

Связанный: http://stackoverflow.com/questions/3197322/sql-query-at-least-one-of-something –

ответ

0

Насколько я могу судить, он должен работать, если вы не выполняете соединение INNER. Я думаю, что ключевое слово INNER сообщает mySQL включать только каждый источник максимум один раз, поэтому он будет использовать только одну копию TaxiQuery, когда вам действительно нужно до четырех (по одному на каждое место).

+0

Внутреннее соединение будет работать, если вы используете DISTINCT или задаете предложение GROUP BY. В противном случае вам нужно использовать коррелированный подзапрос ... –

Смежные вопросы