I have three tables with the following structures:
users
Table
id | first_name | last_name | company | ... |
---|---|---|---|---|
5 | John | Doe | Company Name | ... |
6 | Joe | Bloggs | Bloggs Inc. | ... |
... | ... | ... | ... | ... |
vehicles
Table
id | name | user_id | ... |
---|---|---|---|
1 | 2020 VW Tigan | 5 | ... |
... | ... | ... | ... |
bids
Table
id | bidder_user_id | vehicle_id | amount | ... |
---|---|---|---|---|
1 | 6 | 1 | 4000 | .... |
... | ... | ... | ... | ... |
I am trying to get all bids along with the ID of the vehicle being bid on, the name of the user_id
who owns the vehicle, the name of the bidder_user_id
who bid on the vehicle, and the bid amount
.
My problem is that it seems I need to conduct two JOIN
statements on the users
table in order to match the bidder_user_id
from bids
, and vehicle.user_id
from vehicles
however that doesn't seem to be possible.
Here is my query so far:
SELECT
vehicle_id AS vehicleID,
vehicles.user_id AS sellerID,
bids.bidder_user_id AS bidderID,
CONCAT(users.first_name, ' ', users.last_name) AS bidderName,
users.company AS bidderCompanyName,
bids.amount AS bid_amount,
FROM `bids`
JOIN `users` ON bids.bidder_user_id = users.id
JOIN `vehicles` ON bids.vehicle_id = vehicle.id
ORDER BY vehicle_id DESC;
This is the result the above query produces:
vehicleID | sellerID | bidderID | bidderName | bidderCompanyName | bid_amount |
---|---|---|---|---|---|
1 | 5 | 6 | Joe Bloggs | Bloggs Inc. | 4000 |
However I would like the following result set which also includes the name of the seller as sellerName
:
vehicleID | sellerID | sellerName | bidderID | bidderName | bidderCompanyName | bid_amount |
---|---|---|---|---|---|---|
1 | 5 | John Doe | 6 | Joe Bloggs | Bloggs Inc. | 4000 |
CodePudding user response:
Just join the users
table twice:
SELECT bids.id,
bids.amount,
CONCAT(owners.first_name, ' ', owners.last_name) as owner,
CONCAT(bidders.first_name, ' ', bidders.last_name) as bidder
FROM bids
JOIN users as bidders
ON bids.bidder_user_id = bidders.id
JOIN vehicles
ON bids.vehicle_id = vehicles.id
JOIN users as owners
ON vehicles.user_id = owners.id