Tạo tham gia dựa trên nhiều lĩnh vực bằng ArcGIS Desktop?


8

Tôi có hai lớp tính năng trong Cơ sở dữ liệu địa lý tệp mà tôi muốn tham gia dựa trên nhiều lĩnh vực. Tôi đã tìm kiếm trang web này và Google và tất cả những gì tôi nghĩ ra là sử dụng công cụ Make Query Table. Tôi đã thử điều này, nhưng tôi tiếp tục gặp lỗi SQL. SQL của tôi khá kém và tôi khá chắc chắn rằng mình đang thiếu thứ gì đó.

Tôi biết rằng tôi có thể tạo một trường mới và ghép các giá trị từ các trường của mình, nhưng tôi muốn tránh điều này, nếu có thể.

Tôi đang sử dụng một cái gì đó trông như thế này:

(Table1.Field1 = Table2.Field1) AND (Table1.Field2 = Table2.Field2) AND (Table1.Field3 = Table2.Field3)

Khi tôi xác minh truy vấn, tôi gặp lỗi:

There was an error with the expression. 
An Invalid SQL statement was used.
An invalid SQL statement was used. [Table1]

Ngoài ra, nếu ai đó có giải pháp khác không sử dụng công cụ này, tôi rất vui khi biết về nó.


Hãy thử nối Bảng 1 đến Bảng 2, sau đó nối Bảng 3 với kết quả của điều đó. Nó cũng sẽ giúp bạn nếu bạn đã sử dụng trình tạo truy vấn (nút [sql] trong công cụ Tạo bảng truy vấn) để xác minh cú pháp.
nagytech

Lưu ý, chỉ có hai bảng nhưng ba trường. Tôi đang sử dụng trình tạo truy vấn và lỗi tôi nhận được xuất hiện khi nhấp vào Xác minh. Tham gia có hiệu quả tham gia các trường 1,2,3 từ bảng 1 đến các trường 1,2,3 từ bảng 2.
Fezter

Tôi đã không đọc bài viết rất tốt, nó có ý nghĩa hơn bây giờ.
nagytech

Cũng như một lời nhắc nhở: cũng đảm bảo rằng các lớp hoặc bảng là một phần của cùng một cơ sở dữ liệu địa lý VÀ đảm bảo các trường khóa mà phép nối sẽ được vận hành cùng loại.

Câu trả lời:


11

Cú pháp của bạn không chính xác.

Tài liệu tham khảo

Nếu bạn đọc trợ giúp thanh bên Tạo bảng truy vấn :

Biểu thức (tùy chọn)

Một biểu thức SQL được sử dụng để chọn một tập hợp con các bản ghi. Cú pháp cho biểu thức khác nhau một chút tùy thuộc vào nguồn dữ liệu. Ví dụ: nếu bạn đang truy vấn tệp hoặc cơ sở dữ liệu địa lý ArcSDE, shapefiles, coverages, dBase hoặc bảng INFO, hãy đặt tên trường trong dấu ngoặc kép:

"CÁNH ĐỒNG CỦA TÔI"

Nếu bạn đang truy vấn cơ sở dữ liệu địa lý cá nhân, hãy đặt các trường trong ngoặc vuông:

[CÁNH ĐỒNG CỦA TÔI]

Vân vân...

Điều đó có nghĩa là định dạng chính xác như:

"Table2"."f1" = "Table1"."f1" AND "Table2"."f2" = "Table1"."f2" AND "Table2"."f3" = "Table1"."f3" 

Kịch bản

Đoạn mã trăn sau đây sẽ cho phép bạn chạy công cụ mà không gặp lỗi:

arcpy.MakeQueryTable_management("Table1;Table2","QueryTable11111","NO_KEY_FIELD","#","Table1.f1 #;Table1.f2 #;Table1.f3 #;Table2.f1 #;Table2.f2 #;Table2.f3 #","/\Table1/\./\f1/\ = /\Table2/\./\f1/\ AND /\Table1/\./\f2/\ = /\Table2/\./\f2/\ AND /\Table1/\./\f3/\ = /\Table2/\./\f3/\")

Kết quả

nhập mô tả hình ảnh ở đây


Tôi nhận thức được phương pháp này, như tôi đã đề cập trong câu hỏi của mình. Tôi đang tìm cách khác, nếu có.
Fezter

3
Mặc dù bạn nhận thức được giải pháp, và trên thực tế, là một giải pháp cho vấn đề của bạn, những người khác có thể không.
nagytech

@Fezter Tôi đã cập nhật câu trả lời của mình, xin hãy xem.
nagytech

cảm ơn câu trả lời cập nhật Tôi đã sử dụng trình xây dựng truy vấn, vì vậy tôi giả sử nó sẽ tự động đặt nó theo đúng cú pháp cho tôi. Tôi đã thêm các trích dẫn và nó đã nhận được một chút hơn trước. Tôi có thể chạy công cụ nhưng bây giờ tôi gặp lỗi sau: ERROR 999999: Lỗi thực thi chức năng. Trường dự kiến ​​không được tìm thấy hoặc không thể truy xuất đúng cách. [QueryTable] Không tìm thấy Trường dự kiến ​​hoặc không thể truy xuất đúng cách. [Table2.Field1] Không tìm thấy Trường dự kiến ​​hoặc không thể truy xuất đúng cách. [Table2.Field1] Không thể thực thi (MakeQueryTable).
Fezter

1
Tôi đã lấy lại downvote cho nỗ lực của bạn. Nhiều đánh giá cao.
Fezter

6

(FGDB 10.2 & ArcMAP 10.2) Có lẽ mở ra một câu hỏi cũ - nhưng tôi nghĩ điều này có liên quan. Trình tạo SQL của Make Query Table sẽ đưa ra một lỗi khi bạn xác minh, ngay cả khi cú pháp của bạn là chính xác. Tôi đã tạo truy vấn của mình mà không có dấu ngoặc kép hoặc dấu ngoặc đơn, chỉ đơn giản là

Table1.Field1 = Table2.Field1 AND Table1.Field2 = Table2.Field2

không chọn xác minh; Tôi chỉ cần chạy công cụ và bảng đầu ra của tôi đã được tạo chính xác.

Một câu hỏi Stackexchange khác liên quan đến lỗi này; Xem lại câu trả lời của User2118


2
Tôi gặp phải điều tương tự với FGDB. Tôi đã chạy công cụ một lần với dấu ngoặc kép ("table.field" = "table2.field") giống như Trình tạo biểu thức được tạo và Xác minh và công cụ không thành công. Tôi đã xóa dấu ngoặc kép (table.field = table2.field) và xác minh thất bại, nhưng công cụ đã chạy thành công. Cả ArcGIS Desktop và FGDB đều là 10.2.2.
Dan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.