2010-09-05 7 views
12
SELECT var1,var2,var3,table_name 
FROM table1 LEFT JOIN table_name on var3=table_name.id 

Có nghĩa là tôi muốn tự động rời tham gia bảng, tùy thuộc vào giá trị của table_name từ table1, vì var3 được lấy từ đó.MYSQL truy vấn sử dụng biến như tên bảng trong LEFT JOIN

Nhưng kết quả truy vấn trên trong

bảng tên_bảng không tồn tại

sai lầm của tôi về giới hạn mysql?

+0

Tôi không nghĩ bạn có thể làm điều này. Bạn có thể sẽ cần phải chuyển tên bảng vào một thủ tục được lưu trữ nếu bạn muốn loại chức năng này hoặc thiết kế lại những gì bạn đang cố gắng làm. – spig

+1

Nó không phải là một hạn chế của MySQL. Giống như giới hạn SQL nếu bạn có thể gọi nó, nhưng tôi wuold thay vì nói, đó là một dấu hiệu cho thấy có gì đó sai với thiết kế cơ sở dữ liệu của bạn. – Mchl

+0

Bảng chính chứa các đối tượng. Mỗi đối tượng có thể có các thuộc tính. Có các bảng riêng biệt cho từng thuộc tính liệt kê các giá trị có thể có - các giá trị có thể rất dài (vài trăm ký tự) và có nhiều giá trị có thể (hàng nghìn). Vì vậy, bảng chính có 2 trường cho mỗi thuộc tính: attr_table_name, attr_table_id - để tiết kiệm không gian và cho phép sửa đổi tên thuộc tính. Khi truy vấn được chạy, tôi trả về giá trị thuộc tính thực tế, không phải id, đó là lý do tại sao tôi cần LEFT JOIN và đặt tên bảng động. Bạn thiết kế DB khác như thế nào? – selytch

Trả lời