Hoi,
Ik heb nu deze query:
Codeblok (voorbeeld.php):
1
2
3
4
5
SELECT
flights.*,
(SELECT cities.name FROM cities WHERE cities.id = flights.destinationId) AS destination,
(SELECT cities.name FROM cities WHERE cities.id = flights.departureId) as departure
FROM flights
wat het gewenste resultaat geeft:
Afbeelding niet beschikbaarDe bron kon niet worden geladen (i.imgur.com).Bron openen ↗
Nu is mijn vraag of dit allemaal in 1 query kan. Met joins loop ik vast omdat ik niet 2 keer dezelfde table kan joinen.
Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT cities.name AS name, flights.*,
companies.name AS airlinerName,
flights.price AS pricePerSeat,
UNIX_TIMESTAMP(
FROM_UNIXTIME(flights.departureTime, %Y-%m-%d)
) AS departureDay,
(SELECT COALESCE(SUM(amountPpl), 0)
FROM bookings
WHERE flightId = flights.id
) AS seatsTaken
FROM flights
INNER JOIN cities
ON flights.destinationId = cities.id
INNER JOIN cities
ON flights.departureIdId = cities.id
INNER JOIN companies
ON flights.airlinerId = companies.id
HAVING flights.totalSeats - seatsTaken > 0
geeft:
#1066 - Not unique table/alias: cities
Ik heb nu deze query:
Codeblok (voorbeeld.php):
1
2
3
4
5
SELECT
flights.*,
(SELECT cities.name FROM cities WHERE cities.id = flights.destinationId) AS destination,
(SELECT cities.name FROM cities WHERE cities.id = flights.departureId) as departure
FROM flights
wat het gewenste resultaat geeft:
Afbeelding niet beschikbaarDe bron kon niet worden geladen (i.imgur.com).Bron openen ↗Nu is mijn vraag of dit allemaal in 1 query kan. Met joins loop ik vast omdat ik niet 2 keer dezelfde table kan joinen.
Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT cities.name AS name, flights.*,
companies.name AS airlinerName,
flights.price AS pricePerSeat,
UNIX_TIMESTAMP(
FROM_UNIXTIME(flights.departureTime, %Y-%m-%d)
) AS departureDay,
(SELECT COALESCE(SUM(amountPpl), 0)
FROM bookings
WHERE flightId = flights.id
) AS seatsTaken
FROM flights
INNER JOIN cities
ON flights.destinationId = cities.id
INNER JOIN cities
ON flights.departureIdId = cities.id
INNER JOIN companies
ON flights.airlinerId = companies.id
HAVING flights.totalSeats - seatsTaken > 0
geeft:
#1066 - Not unique table/alias: cities
