/ / MySQL Instrukcja SQL z INNER JOIN - mysql, sql, inner-join

Instrukcja SQL MySQL z INNER JOIN - mysql, sql, inner-join

Mam następującą instrukcję SQL

SELECT be.*, it.order_number
FROM songs AS be

INNER JOIN
(
SELECT song_id, order_number
FROM items
WHERE order_status = 1
) it
ON be.id = it.song_id

INNER JOIN orders AS or
ON it.order_number = or.order_number

WHERE be.active = 0

Mogę „nie rozumieć, dlaczego to stwierdzenie nie daje żadnych wyników. Kiedy usuwam następujący wiersz;

INNER JOIN orders AS or
ON it.order_number = or.order_number

Wydaje się, że przynosi rezultaty i wiem, że order_number istnieje w orders tabela - więc jest to oczywiście niepoprawna składnia, ale nie jestem pewien, skąd się stąd wybrać? Doceń pomoc.

Odpowiedzi:

1 dla odpowiedzi № 1

Problem w tym konkretnym przypadku polega na tym, że or w zapytaniu jest słowem zastrzeżonym. Możesz tego użyć, jeśli chcesz, ale będziesz musiał to cytować

SELECT be.*, it.order_number
FROM songs AS be

INNER JOIN
(
SELECT song_id, order_number
FROM items
WHERE order_status = 1
) it
ON be.id = it.song_id

INNER JOIN orders AS "or"
ON it.order_number = "or".order_number

WHERE be.active = 0

Generalnie jednak, dla czytelności, unikam takich nazw. Jeśli musisz je cytować lub uciec, prawdopodobnie jest to zła nazwa.