[英]Query on two tables merged with same column names
I have these tables in my MySQL database: 我的MySQL数据库中有这些表:
BUYERS 买家
ID|SELLER
----------------
0 |Paul
1 |Jean
2 |David
3 |Jack
4 |John
5 |Fred
6 |Peter
PARIS 巴黎
ID|CAR
---------
0 |Toyota
1 |BMW
2 |Honda
LONDON 伦敦
ID|CAR
---------
3 |Ford
4 |BMW
5 |Honda
6 |Honda
I use the followinq query : 我使用followinq查询:
SELECT b.id, b.seller, p.car
FROM buyers b
JOIN paris p
ON b.id = p.id
UNION ALL
SELECT b.id, b.seller, l.car
FROM buyers b
JOIN london l
ON g.id = l.id;
To get the following result : 得到以下结果:
ID|SELLER |CAR
----------------
0 |Paul |Toyota
1 |Jean |BMW
2 |David |Honda
3 |Jack |Ford
4 |John |BMW
5 |Fred |Honda
6 |Peter |Honda
I wanted to retrieve rows with "Honda" as "CAR" and I Tried to append the query with "Where car = 'Honda'" but without success.. 我想用“ Honda”作为“ CAR”来检索行,并且试图在查询中附加“ Where car ='Honda'”,但没有成功。
Thanks for any help 谢谢你的帮助
Just appending WHERE car = 'Honda'
is ambiguous. 仅添加
WHERE car = 'Honda'
是不明确的。 Which car column should be checked? 应该检查哪辆车列?
The easiest way to achieve this is to wrap your existing query within another select statement so that the query is applied on the resulting table, ie 实现此目的的最简单方法是将现有查询包装在另一个select语句中,以便将该查询应用于结果表,即
SELECT * FROM
(
SELECT b.id, b.seller, p.car
FROM buyers b
JOIN paris p
ON b.id = p.id
UNION ALL
SELECT b.id, b.seller, l.car
FROM buyers b
JOIN london l
ON g.id = l.id;
)
WHERE car = 'Honda'
Adding 添加
WHERE car = 'Honda';
to your query only refers to the second query, ie the one after UNION ALL
. 您的查询仅引用第二个查询,即
UNION ALL
之后的查询。
So either: 所以:
SELECT b.id, b.seller, p.car FROM buyers b JOIN paris p ON b.id = p.id
WHERE p.car = 'Honda'
UNION ALL
SELECT b.id, b.seller, l.car FROM buyers b JOIN london l ON b.id = l.id
WHERE p.car = 'Honda'
;
or 要么
SELECT id, seller, car
FROM
(
SELECT b.id, b.seller, p.car FROM buyers b JOIN paris p ON b.id = p.id
UNION ALL
SELECT b.id, b.seller, l.car FROM buyers b JOIN london l ON b.id = l.id
) data
WHERE car = 'Honda';
Can you please try below query: 您能不能尝试以下查询:
select * from (
SELECT b.id, b.seller, p.car
FROM buyers b
JOIN paris p
ON b.id = p.id
UNION ALL
SELECT b.id, b.seller, l.car
FROM buyers b
JOIN london l
ON g.id = l.id;
)
where car = 'HONDA'
Just in case this is your real database (I'm pretty sure it isn't), here is some advice: 以防万一这是您的真实数据库(我敢肯定不是),这是一些建议:
buyer_id
or the like. buyer_id
ID的名称(即buyer_id
等)来调用ID。 cars
. cars
。 If it's really about brands only, a better name would hence be brands
or car_brands
or the like. brands
或car_brands
等。 Here is an example on how to design the database: 这是有关如何设计数据库的示例:
Cars 汽车
id_car | name -------+------- 1 | BMW 2 | Ford 3 | Honda 4 | Toyota
Sellers 卖家
id_seller | name ----------+------ 0 | Paul 1 | Jean 2 | David 3 | Jack 4 | John 5 | Fred 6 | Peter
Sellers_Cars Sellers_Cars
id_seller | id_car ----------+------- 0 | 1 0 | 2 0 | 4 1 | 1 2 | 3 3 | 2 4 | 1 5 | 3 6 | 3 6 | 4
A possible query: 可能的查询:
select name as honda_seller
from sellers
where id_seller in
(
select id_seller
from sellers_cars
where car_id = (select car_id from cars where name = 'Honda')
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.