2017-05-24 83 views
1

我有三张表,用户,汽车和租金。 租赁表包含类似交易信息。我想要显示一些用户表列的输出,一些车列与租表连接。MySQL - 不唯一表/别名

我使用PHPMyAdmin来提取查询,但我得到了“不唯一表/别名”错误。

我的查询:

SELECT `rent`.*, `cars`.`car_id`, `cars`.`car_name`, `users`.`user_id`, 
    `users`.`name`, `users`.`state`, `users`.`address`, `users`.`zip`, 
    `users`.`phone`, `users`.`email` 
FROM `rent` , `cars` , `users` 
LEFT JOIN `rent` ON `users`.`user_id` = `rent`.`user_id` 
LEFT JOIN `rent` ON `cars`.`car_id` = `rent`.`car_id` 
AND `rent`.`user_id` = `users`.`user_id` AND `rent`.`car_id` = `cars`.`car_id` 

感谢

+2

查询是否需要“JOIN租赁”表两次?我怀疑他们中的一个可能必须是'汽车'?如果你仍然希望同一个表连接两次,你应该使用一个别名:'LEFT JOIN table1 AS t1',然后为其任何一个字段:'t1.field1'。 –

+1

此外,'JOIN'已被错误使用 - 'FROM rent,cars,users LEFT JOIN ...'。这没有帮助。请看看这个:[MySQL LEFT JOIN示例](https://stackoverflow.com/q/22769989/2298301) –

回答

0

决不使用逗号条款FROM条款。 始终使用正确的,明确的JOIN语法:

SELECT r.*, c.car_id, c.car_name, u.user_id, u.name, u.state, u.address, u.zip, u.phone, u.email 
FROM users u JOIN 
    rent r 
    ON u.user_id = r.user_id JOIN 
    cars c 
    ON c.car_id = r.car_id; 

注意使用表的别名。他们使查询更容易编写和阅读。

我也不知道你为什么使用LEFT JOIN,所以我将它们改为内连接。

+0

感谢您的指导!我一直在努力工作了很长一段时间..非常感谢! – Pidaus

0

的不是唯一的表的别名意味着,更多的则1台具有相同的别名。

您的疑问:

SELECT rent.*, cars.car_id, cars.car_name, users.user_id, users.name, users.state, users.address, users.zip, users.phone, users.email 
FROM rent , cars , users 
LEFT JOIN rent ON users.user_id = rent.user_id 
LEFT JOIN rent ON cars.car_id = rent.car_id AND rent.user_id = users.user_id AND rent.car_id = cars.car_id 

应改为

SELECT rent.*, cars.car_id, cars.car_name, users.user_id, users.name, users.state, users.address, users.zip, users.phone, users.email 
FROM rent , cars , users 
LEFT JOIN rent AS rent_1 ON users.user_id = rent_1.user_id 
LEFT JOIN rent AS rent_2 ON cars.car_id = rent_2.car_id AND rent_2.user_id = users.user_id AND rent_2.car_id = cars.car_id 

以避免此问题。

对于剩下:查询看起来是更复杂一点,那么它应该: 看起来你可以像这样运行它,并得到同样的结果:

SELECT rent.*, cars.car_id, cars.car_name, users.user_id, users.name, users.state, users.address, users.zip, users.phone, users.email 
FROM rent 
LEFT JOIN users ON users.user_id = rent.user_id 
LEFT JOIN cars ON cars.car_id = rent.car_id AND rent.user_id = users.user_id AND rent.car_id = cars.car_id 
相关问题