Tôi có hai bảng trong một DB SQLite, INVITEM và SHOPITEM. Thuộc tính được chia sẻ của họ là ItemId và tôi muốn thực hiện INNER JOIN. Dưới đây là các truy vấn:"tên cột mơ hồ" trong 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 không thích nó:
SQL error: ambiguous column name: ItemId
Các lỗi sẽ biến mất nếu tôi viết WHERE INVITEM.ItemId = 3
, nhưng vì điều kiện WHERE là nhiều hay ít người dùng chỉ định, tôi khá chắc nó hoạt động mà không cần phải chỉ định bảng. NATURAL JOIN dường như giải quyết vấn đề, nhưng tôi không chắc liệu giải pháp đó có đủ chung hay không (ví dụ như tôi có thể sử dụng trong trường hợp này, nhưng tôi không chắc liệu mình có thể sử dụng trong mọi trường hợp) không?
Mọi SQL thay thế cú pháp nào có thể khắc phục được sự cố?
Tôi đã làm một việc như thế này. Tôi không bao giờ cho phép người dùng viết SQL trực tiếp, nhưng các mệnh đề WHERE được xây dựng bằng cách sử dụng các mẫu biểu thức. Đủ điều kiện các tên cột khi cần thiết là đủ. – ggambett