2013-10-28 11 views
12

tôi cần phải thực hiện một truy vấn như thế này:SQLite - LEFT JOIN

SELECT table1.*, table2.column 
FROM table1 
LEFT JOIN table2 ON table1.column = table2.column 

Nhưng nó không làm việc. Nếu tôi thử cùng một truy vấn nhưng thay thế phần đầu tiên ->

SELECT table1.column, table2.column 
FROM table1 
LEFT JOIN table2 ON table1.column = table2.column 

hoạt động tốt. Tôi cần phải mang tất cả các cột từ table1. Làm thế nào tôi có thể làm cho nó mà không cần specifing tất cả chúng?

+0

Lỗi là gì? Bạn không có cùng tên cột trong cả hai bảng? – kmas

+1

Sử dụng 'SELECT *' hoặc 'SELECT table. *' Trong sản xuất là một thực hành không tốt. Hãy xem xét để chỉ định tất cả các cột một cách rõ ràng. Đọc thêm http://stackoverflow.com/questions/3639861/why-is-select-considered-harmful – peterm

+0

Vâng, đó là cùng tên. Và không có lỗi, tôi nhận được tất cả các cột table1 nhưng không phải là một trong những tôi cần. Đây là truy vấn thực sự SELECT property. *, Ubication.name TỪ thuộc tính LEFT JOIN ubication ON ubication.id = property.ubication –

Trả lời

14

Nếu bạn có tên cùng một cột trong table1table2, đây là giải pháp cho không chỉ định tất cả các tên cột của table1:

SELECT table1.*, table2.column as my_column_name_no_in_table1 
FROM table1 
LEFT JOIN table2 ON table1.column = table2.column 

Nếu tên cột của table1table2 đều khác nhau, bạn có thể sử dụng:

SELECT table1.*, table2.* 
FROM table1 
LEFT JOIN table2 ON table1.column = table2.column 

Nhưng như đã nói trong nhận xét của peterm, đó không phải là phương pháp hay trong sản xuất. Bây giờ, làm như bạn muốn! ;)

+0

Tôi vẫn nhận được các cột giống như tôi đã làm trước đây! –

+0

Hãy cho chúng tôi biết lỗi ... Nếu không, chúng tôi không thể giúp bạn. – kmas

+0

Và bạn cũng có thể cung cấp cho chúng tôi cấu trúc bảng nếu bạn muốn được trợ giúp thêm. – kmas