Mam dwie tabele w SQLite DB, INVITEM i SHOPITEM. Ich wspólnym atrybutem jest ItemId i chcę wykonać INNER JOIN. Oto zapytanie:"niejednoznaczna nazwa kolumny" w SQLite INNER JOIN
SELECT INVITEM.CharId AS CharId,
INVITEM.ItemId AS ItemId
FROM (INVITEM as INVITEM
INNER JOIN SHOPITEM AS SHOPITEM
ON SHOPITEM.ItemId = INVITEM.ItemId)
WHERE ItemId = 3;
SQLite nie podoba:
SQL error: ambiguous column name: ItemId
Błąd znika, gdy piszę WHERE INVITEM.ItemId = 3
, ale ponieważ WHERE warunek jest mniej lub bardziej określony przez użytkownika, wolałbym zrobić działa bez konieczności określania tabeli. NATURAL JOIN wydaje się rozwiązywać problem, ale nie jestem pewien, czy to rozwiązanie jest wystarczająco ogólne (tj. Mógłbym użyć w tym przypadku, ale nie jestem pewien, czy mogę go użyć w każdym przypadku)
Dowolny alternatywny SQL składnia, która naprawiłaby problem?
Skończyło się na zrobieniu czegoś takiego. Nigdy nie zezwalam użytkownikowi na bezpośrednie pisanie kodu SQL, ale klauzule WHERE są tworzone przy użyciu szablonów wyrażeń. Kwalifikacja nazw kolumn w razie potrzeby wystarczy. – ggambett