在动态下拉列表中停止重复行

时间:2017-07-13 09:34:23

标签: php mysql sql

我有两张桌子,用户和电梯。

在我的UI(php网页)上,我有两个下拉(以及其他,不相关),一个下拉是[userlastname,userfirstname],另一个是[destination]

我正在使用的查询是:

SELECT * FROM lifts l JOIN users u ON l.user_id=u.uid GROUP BY l.id;

它为我提供了用户的用户名列表(正确)

[Harvey Fletcher]
[Ronald McDonald]
[Harvey Fletcher]

以及所有目的地的列表

[Destination 1]
[Destination 2]
[Destination 3]

但是从用户名列表中可以看出,[Harvey Fletcher]出现了两次。我怎么能阻止这种情况发生?表格结构如下。

用户:

+---------------------+--------------+------+-----+---------+----------------+
| Field               | Type         | Null | Key | Default | Extra          |
+---------------------+--------------+------+-----+---------+----------------+
| uid                 | int(10)      | NO   | PRI | NULL    | auto_increment |
| title               | varchar(10)  | NO   |     | NULL    |                |
| firstname           | varchar(100) | NO   |     | NULL    |                |
| lastname            | varchar(100) | NO   |     | NULL    |                |
| email               | varchar(500) | NO   |     | NULL    |                |
| password            | varchar(500) | NO   |     | NULL    |                |
| reg_no              | varchar(10)  | YES  |     | NULL    |                |
| vehicle_make        | varchar(50)  | YES  |     | NULL    |                |
| vehicle_colour      | varchar(25)  | YES  |     | NULL    |                |
| licence_no          | varchar(50)  | YES  |     | NULL    |                |
| address_line1       | varchar(75)  | NO   |     | NULL    |                |
| address_line2       | varchar(75)  | NO   |     | NULL    |                |
| town_city           | varchar(75)  | NO   |     | NULL    |                |
| postcode            | varchar(10)  | NO   |     | NULL    |                |
| reputation_positive | int(10)      | YES  |     | 0       |                |
| reputation_negative | int(10)      | YES  |     | 0       |                |
| telephone_number    | char(11)     | NO   |     | NULL    |                |
+---------------------+--------------+------+-----+---------+----------------+

升降机:

+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(10)      | NO   | PRI | NULL    | auto_increment |
| user_id         | int(10)      | NO   |     | NULL    |                |
| lift_to         | varchar(50)  | NO   |     | NULL    |                |
| lift_from       | varchar(50)  | NO   |     | NULL    |                |
| quote_price     | varchar(50)  | NO   |     | NULL    |                |
| available_seats | int(2)       | YES  |     | 1       |                |
| depart_date     | varchar(20)  | NO   |     | NULL    |                |
| depart_time     | varchar(10)  | NO   |     | NULL    |                |
| pickup_location | varchar(100) | NO   |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+

的信息: Harvey Fletcher只在用户表中一次 Harvey Fletcher有两个“升降机”,这就是它出现两次的原因。 罗纳德麦当劳只有一个,所以只出现一次,但如果我加了第二次升降,就会显示2次。

1 个答案:

答案 0 :(得分:0)

将查询分组给用户而不是升降机:

SELECT * FROM lifts l JOIN users u ON l.user_id=u.uid GROUP BY u.uid;